如何通过LINQ搜索2D数组?

时间:2013-09-07 10:54:48

标签: c# asp.net linq

我有一个像这样的 2D数组

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

我在第二列中搜索名称 语句,如下所示:

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);

我想使用 LINQ 代替 for 语句来获取以“m”开头的第一个名称
如何将 for 语句转换为 LINQ

1 个答案:

答案 0 :(得分:4)

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

i % 2 == 1只会从第二列中获取商品,而x.StartWith("m")只会采用以'm'开头的商品。

您必须在其他LINQ方法之前使用Cast<string>(),因为多维数组不实现通用IEnumerable<T>