簡體   English   中英

Linq:從字典中選擇KeyValuePair,其中value是對象列表

[英]Linq: Select KeyValuePair from dictionary where value is a list of objects

我有一個看起來像這樣的字段:

public Dictionary<ClassA, List<ClassB>> MyDict;

假使,假設:

public class ClassA 
{
    public string Name;
    public int Id;
 }

public class ClassB 
{
    public string Tag;
    public string Text;
 }

我正在嘗試定義一個IEnumerable<KeyValuePair<ClassA,IEnumerable<ClassB>>類型的查詢,其中我定義了ClassB.Tag的值的ClassB.Tag 我嘗試過這樣的事情:

IEnumerable<KeyValuePair<ClassA,IEnumerable<ClassB>> q =
    MyDict.Where(pair => pair.Value.Any(b => b.Tag == "a tag"));

但顯然上面不是我需要的,因為如果任何項匹配該條件,它返回整個List<ClassB> ,而我想要的是返回IEnumrable或符合條件的項List

dotNetFiddle演示

您需要從對ToDictionary的調用構造IEnumerable,其中您使用投影僅從列表中獲取匹配的BClass,並且僅從該集合中獲取BClass列表中的值實際匹配的結果。

IEnumerable<KeyValuePair<ClassA,List<ClassB>>> q = MyDict.ToDictionary(
    k => k.Key, 
    k => k.Value.Where(b => b.Tag == "10").ToList()
).Where(kv => kv.Value.Any());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM