0

whereこの条項はどのように機能していますか?

(digit, index) => digit.Length < index

コード

public void Linq5() 
    { 
        string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; 

        var shortDigits = digits.Where((digit, index) => digit.Length < index); 

        Console.WriteLine("Short digits:"); 
        foreach (var d in shortDigits) 
        { 
            Console.WriteLine("The word {0} is shorter than its value.", d); 
        } 
    }

ソース

明確化のために編集 Iswanto San に従って

(digit, index) => digit.Length < index

変数の宣言:

(digit, index) -- digit as array of digits 

状態 ( のwhere節と同様SQL):

digit.Length < index

私が間違っている場合は正しいですか?私が正しいとしたら、の役割は何ですか=>

4

3 に答える 3

2

これにより、リストのすべての要素が返さLengthれます。リストは、そのリスト内の位置よりも下にあります。

MSDN:Enumerable.Where<TSource> Method (IEnumerable<TSource>, Func<TSource, Int32, Boolean>)

predicate の最初の引数は、テストする要素を表します。2 番目の引数は、ソース内の要素のゼロから始まるインデックスを表します。

次の要素を返す必要があります。

{ "five", "six", "seven", "eight", "nine" }
于 2013-03-16T07:07:51.427 に答える
2

配列内のインデックスよりも長さが小さい文字列を選択します。

于 2013-03-16T07:08:34.177 に答える
1

これ:

(digit, index) => digit.Length < index

digitは配列の内容 (この場合digitsは ) を参照し、データ型はStringです。 indexは配列インデックスを参照し、データ型はintです。

そのため、その条件は、インデックス (位置) よりも長さが短い配列コンテンツを出力します。

例えば:

digits="zero", index=0=> false、長さ = 4、インデックス = 0

digits="one", index=1=> false、長さ = 3、インデックス = 1

digits="two", index=2=> false、長さ = 3、インデックス = 2

digits="three", index=3=> false、長さ = 5、インデックス = 3

digits="four", index=4=> false、長さ = 4、インデックス = 4

digits="five", index=5=> 真、長さ = 4、インデックス = 5

詳細: Enumerable.Where

于 2013-03-16T07:09:45.287 に答える