从包含列表并按值过滤的字典中获取键(对象)

时间:2014-01-22 13:14:15

标签: c# linq

我想返回包含类型B的对象的键列表(类型A)。类型B对象具有将用于比较的属性,并且我不能使用包含。 我想做一个A

列表
Dictionary<A, List<B>> objAwithB = new Dictionary<A, List<B>>();
B objB = new B();
objB.prop1 = "AAA"
objAwithB.Where(g => g.Value.Where(a=>a.Equals(objB.prop1))).Select(g => g.Key).ToList();

但它不起作用

3 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

var myKeys = objAwithB.Where(
    kvp => kvp.Value.Any(v => v.prop1.Equals(objB.prop1) )
  ).Select(kvp => kvp.Key);

答案 1 :(得分:0)

看起来你想要:

objAwithB.Where(g => g.Value.Any(b=>b.prop1.Equals(objB.prop1)))
         .Select(g => g.Key).ToList();

答案 2 :(得分:0)

任何()都应该做到这一点:

Dictionary<A, List<B>> objAwithB = new Dictionary<A, List<B>>();
B objB = new B();
objB.Prop1 = "AAA";

objAwithB.Where(g => g.Value.Any(x => x.Prop1 == objB.Prop1))
         .Select(g => g.Key)
         .ToList();