2

我有一个像这样的二维数组

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

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

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

4

1 回答 1

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

i % 2 == 1将只取第二列中的项目,并且x.StartWith("m")只取以 . 开头的名称'm'

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

于 2013-09-07T10:55:56.690 回答