如何使用 LINQ 通过匹配键和值来选择键值对列表



我有一个 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.

最新更新