C#选择List <t>中存在于另一个列表中的所有元素

时间:2018-04-23 11:17:24

标签: c# linq

我有以下代码:

public class A 
{
   string Name {get; set};
   string anotherProperty {get; set};
   Dictionary<string, string> Attributes {get; set};
}
List<A> listA = new List<A>();
List<string> Filters = new List<string>();

现在,我要做的是从listA中按名称元素选择所有DISTINCT,其中字典属性键等于Filters列表中的任何值。

1 个答案:

答案 0 :(得分:0)

  

现在,我要做的是从名称元素中选择所有DISTINCT   listA其中字典属性键等于来自的任何值   过滤器列表。

要定义不同的by属性,您可以使用按名称定义组并获取第一个。要定义过滤器,可以使用字典中的Keys属性来搜索过滤器列表中的任何键。

var result = listA.Where(x => x.Attributes.Keys.Any(a => Filters.Contains(a)))
                  .GroupBy(x => x.Name)
                  .Select(x => x.First())
                  .ToList();