我有一个KeyValuePair列表的通用列表,
即。 List<List<KeyValuePair<string, string>>>
。
我正在尝试提取内部列表List<KeyValuePair<string, string>>
基于Key和Values的值。
这是我的代码:
var layer =
(from item in layers
from kvp in item
where kvp.Key == "category" && kvp.Value == category_name
where kvp.Key == "featureType" && kvp.Value == feature_type
where kvp.Key == "assetType" && kvp.Value == asset_type
select item);`
在上面的代码项目中将有一个KeyValuePairs列表,我想匹配那些以找到合适的项目。
我想在我的where子句中说的是KeyValuePair(KVP)有一个键==“category”和KVP == category_name的值以及另一个KVP有一个键==“featureType”的地方并且该KVP的值是feature_type,而另一个KVP的key =“assetType”以及该KVP的值== asset_type。
这不起作用,因为图层是一个空列表,但我知道有三个KVP匹配的项目就在那里。
任何人都可以帮我指出正确的方向吗?
答案 0 :(得分:2)
我想这就是你想要的,所有包含这些键值对的列表:
IEnumerable<List<KeyValuePair<string, string>>> layer = layers
.Where(l => l.Any(kv => kv.Key == "category" && kv.Value == category_name)
&& l.Any(kv => kv.Key == "featureType" && kv.Value == feature_type)
&& l.Any(kv => kv.Key == "assetType" && kv.Value == asset_type));
如果您只希望使用一次SingleOrDefault
或(如果不例外)FirstOrDefault
。