string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; var shortDigits = digits.Where((digit, index) => digit.Length < index); (这句啥意思啊) ((digit, index) => digit.Length < index);   这个是干吗用的??表示什么意思?

解决方案 »

  1.   

    var shortDigits = digits.Where((digit, index) => digit.Length < index); 元素的长度小于他的下标的元素
    ((digit, index) => digit.Length < index);lambda表达式,看看MSDN
      

  2.   

    Lambda表达式整句的意思是:查询数组中,数组元素的长度小于数组元素的索引的元素集合
      

  3.   

    digit代表数组中的元素
    index代表元素的下标
    返回数组中元素长度小于其下标的元素集    public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate)
        {
            if (source == null)
            {
                throw Error.ArgumentNull("source");
            }
            if (predicate == null)
            {
                throw Error.ArgumentNull("predicate");
            }
            return WhereIterator<TSource>(source, predicate);
        }    private static IEnumerable<TSource> WhereIterator<TSource>(IEnumerable<TSource> source, Func<TSource, int, bool> predicate)
        {
            int iteratorVariable0 = -1;
            foreach (TSource iteratorVariable1 in source)
            {
                iteratorVariable0++;
                if (predicate(iteratorVariable1, iteratorVariable0))
                {
                    yield return iteratorVariable1;
                }
            }
        }
      

  4.   

    我貌似懂了~~~
    string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };digits[0].Length =4,digits[0].index=0;
    digits[1].Length =3,digits[1].index=1;
    digits[2].Length =3,digits[2].index=2;
    digits[3].Length =5,digits[3].index=3;
    digits[4].Length =4,digits[4].index=4;
    digits[5].Length =4,digits[5].index=5;
    digits[6].Length =3,digits[6].index=6;
    digits[7].Length =5,digits[7].index=7;
    digits[8].Length =5,digits[8].index=8;
    digits[9].Length =4,digits[9].index=9;var shortDigits = digits.Where((digit, index) => digit.Length < index);结果就是:  "five", "six", "seven", "eight", "nine"