gpt4 book ai didi

c# - 如何通过 LINQ 在二维数组中进行搜索?[version2]

转载 作者:可可西里 更新时间:2023-11-01 09:03:05 26 4
gpt4 key购买 nike

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

string[,] ClassNames =
{
{"A","Red"},
{"B","Blue"},
{"C","Pink"},
{"D","Green"},
{"X","Black"},
};

我通过for 语句在1nd 列中搜索ClassName 并在2nd ColorName像这样的强>列:

string className = "A";
string color = "Black";
for (int i = 0; i <= ClassNames.GetUpperBound(0); i++)
{
if (ClassNames[i, 0] == className)
{
color = ClassNames[i, 1];
Response.Write(color);
break;
}
}

我想使用 LINQ 而不是 for 语句来获取 classNamecolor。如何将上面的 for 语句转换为 LINQ。

最佳答案

您可以使用 Enumerable.Range 方法生成一个整数序列,然后使用 Linq 对其进行查询。

像这样的东西会起作用:

string color = Enumerable
.Range(0, ClassNames.GetLength(0))
.Where(i => ClassNames[i, 0] == className)
.Select(i => ClassNames[i, 1])
.FirstOrDefault() ?? "Black";

或者在查询语法中:

string color = 
(from i in Enumerable.Range(0, ClassNames.GetLength(0))
where ClassNames[i, 0] == className
select ClassNames[i, 1])
.FirstOrDefault() ?? "Black";

或者也许将数组转换为 Dictionary<string, string> 第一:

Dictionary<string, string> ClassNamesDict = Enumerable
.Range(0, ClassNames.GetLength(0))
.ToDictionary(i => ClassNames[i, 0], i => ClassNames[i, 1]);

然后您可以更轻松地查询它:

color = ClassNamesDict.ContainsKey(className) 
? ClassNamesDict[className]
: "Black";

如果你必须做很多这样的查询,先生成字典然后查询它会更有效率。

关于c# - 如何通过 LINQ 在二维数组中进行搜索?[version2],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18673822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com