Lambda表达式,用于根据测试字符串从2D字符串数组返回字符串

时间:2016-04-27 22:20:59

标签: c# arrays linq multidimensional-array lambda

我有以下代码。我想将for循环替换为lambda或LINQ表达式以返回我的字符串。

string[,] testval = new string[3,2]

testval[0, 0] = "0"
testval[0, 1] = "string A"
testval[1, 0] = "5"
testval[1, 1] = "string B"
testval[2, 0] = "13"
testval[2, 1] = "string C"

string teststring = "13"

for (int i=0; i<=testval.GetUpperBound(0);i++)
{
    if (testval[i,0] == teststring) { return testval[i,1]; }
}
return null;

我是lambda和LINQ表达式的新手。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

您可以使用Enumerable.Range()生成要迭代的整数序列,然后构建一个Linq查询:

var result = Enumerable.
                .Range(0, testval.GetUpperBound(0)+1)
                .Where(i => testval[i,0] == teststring)
                .Select(i => testval[i,1])
                .FirstOrDefault();

要使用查询语法或其他方法,请查看this excellent answer