2

次のような2D 配列があります。

string[,] arr=
{
    {"1","ali"},
    {"2","mehdi"},
    {"3","john"},
    {"4","milad"},
};

次のようなforステートメントで2列目の名前を検索します。

string name="";
for (int i = 0; i < arr.GetUpperBound(0); i++)
{
     if (arr[i, 1].StartsWith("m"))
     {
         name = arr[i, 1];
         break;
     }
}
Response.Write(name);

forステートメントの代わりにLINQを使用して、「m」で始まる最初の名前を取得したい。上記の forステートメントをLINQ に変換する方法。

4

1 に答える 1

4
var name = arr.Cast<string>()
              .Where((x, i) => i % 2 == 1 && x.StartsWith("m"))
              .First();

i % 2 == 1は、2 列目の項目のみをx.StartWith("m")取得し、で始まる名前のみを取得し'm'ます。

Cast<string>()また、多次元配列はジェネリックを実装していないため、他の LINQ メソッドの前に使用する必要がありますIEnumerable<T>

于 2013-09-07T10:55:56.690 に答える