[英]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
。
您需要從對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.