我面临一个问题,找不到合适的解决方案。我有一个嵌套字典,它的结构如下:
var dict = new Dictionary<int, Dictionary<string , dynamic>>()
{
0 : {Name : "abc" , marks1 : 05 , Marks2 : 10 , marks3 : 39},
1 : {Name : "efg" , marks1 : 20 , Marks2 : 30 , marks3 : 25},
2 : {Name : "hig" , marks1 : 30 , Marks2 : 40 , marks3 : 33},
3 : {Name : "xyz" , marks1 : 40 , Marks2 : 10 , marks3 : 50}
}
我试图使用LINQ查询来获取那些查询的
id
是true
的结果,但我无法选择两个或三个查询条件。对于一个键值对,下面的查询可以很好地工作: var query = from id in dict
from info in id.Value
where (info.Key == "marks1" && Convert.ToDouble(info.Value) > 10)
select id
但是,当我尝试使用2或3个条件来获取以下行的ID时,它无法正常工作。
var query = from id in dict
from info in id.Value
where (info.Key == "marks1" && Convert.ToDouble(info.Value) > 10)
&& (info.Key == "marks2" && Convert.ToDouble(info.Value) > 20)
select id
另外,如果我需要将值相互比较,例如marks1
的值应大于mark2
和mark3
的值。我该如何执行这样的查询?特别是当我不允许像这样通过键来访问值时:
info["marks1"] > ( info["mark2"] && info["marks3"] )
在LINQ中,当我使用以下代码时会出现以下错误:
不能将索引[]应用于类型为'keyvaluepair < string, dynamic>的表达式
info.Key == "marks1" && info.Key == "marks2"
,但您可能想要info.Key == "marks1" || info.Key == "marks2"
(请注意逻辑或)。 - mu88