如何通过LINQ搜索二维数组?我有一个像这样的二维数组:string[,]ClassNames={{"A","Red"},{"B","Blue"},{"C","Pink"},{"D",“绿色”},{“X”,“黑色”},};我通过for语句在第1列中搜索ClassName,并在第2列中返回ColorName,如下所示:stringclassName="A";字符串颜色=“黑色”;对于(inti=0;i<=ClassNames.GetUpperBound(0);i++){if(ClassNames[i,0]==className){color=ClassNames[i,1];响应.Write(color);休息;我想使用LINQ而不是for语句来获取className的颜色。如何将上述语句转换为LINQ。您可以使用Enumerable.Range方法生成一个整数序列,然后使用Linq查询它。这样的事情会起作用:stringcolor=Enumerable.Range(0,ClassNames.GetLength(0)).Where(i=>ClassNames[i,0]==className).Select(i=>ClassNames[i,1]).FirstOrDefault()??“黑色的”;或者在查询语法中:stringcolor=(fromiinEnumerable.Range(0,ClassNames.GetLength(0))whereClassNames[i,0]==classNameselectClassNames[i,1]).FirstOrDefault()??“黑色的”;或者先将数组转换为字典:DictionaryClassNamesDict=Enumerable.Range(0,ClassNames.GetLength(0)).ToDictionary(i=>ClassNames[i,0],i=>ClassNames[i,1]);然后你可以更容易地查询它:color=ClassNamesDict.ContainsKey(className)?ClassNamesDict[className]:"黑色";如果你必须做很多这样的查询,首先生成字典然后查询它会更有效。这个给你:color=ClassNames.Cast().Select((x,i)=>new{x,i}).GroupBy(x=>xi/2,(k,x)=>x.Select(y=>yx)).Where(g=>g.First()==className).Select(x=>x.Last()).First();但老实说,此时我绝不会使用LINQ来完成它。效率低下,可读性差,可维护性差。您应该考虑使用现有的for循环或更改数据结构以使用List或Dictionary而不是string[,]。以上就是C#学习教程:Howtosearcha2DarraythroughLINQ?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
