我有一个 List of KeyValuePair 的通用列表,
即 List<List<KeyValuePair<string, string>>>
.
我正在尝试提取内部列表List<KeyValuePair<string, string>>
基于键和值的值。
这是我的代码:
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);`
在上面的代码中,项目将有一个键值对列表,我想匹配它们以找到正确的项目。
我想在我的 where 子句中说的是,一个键值对 (KVP) 有一个键 == "类别"和该 KVP 的值 == category_name,以及另一个 KVP 有一个键 == "功能类型"并且该 KVP 的值feature_type,而另一个 KVP 有一个键 = "assetType",并且该 KVP 的值 == asset_type。
这不起作用,因为图层是一个空列表,但我知道具有三个 KVP 匹配的项目在那里。
谁能帮我指出正确的方向?
我想这就是你想要的,所有包含这些键值对的列表:
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
.