C# 从 List<T> 中选择存在于另一个列表中的所有元素
Posted
技术标签:
【中文标题】C# 从 List<T> 中选择存在于另一个列表中的所有元素【英文标题】:C# Select all elements from List<T> which exists in another list 【发布时间】:2018-04-23 11:17:24 【问题描述】:我有以下代码:
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 by name 元素,其中字典 Attributes 键等于 Filters 列表中的任何值。
【问题讨论】:
到目前为止有什么努力吗? Find items from a list which exist in another list的可能重复 【参考方案1】:现在,我要做的是选择所有 DISTINCT by name 元素 listA 其中字典 Attributes 键等于 过滤器列表。
要定义不同的属性,您可以使用按名称定义组并获取第一个。要定义过滤器,您可以使用字典中的Keys
属性来搜索过滤器列表中的任何键。
var result = listA.Where(x => x.Attributes.Keys.Any(a => Filters.Contains(a)))
.GroupBy(x => x.Name)
.Select(x => x.First())
.ToList();
【讨论】:
正是我需要的。谢谢!以上是关于C# 从 List<T> 中选择存在于另一个列表中的所有元素的主要内容,如果未能解决你的问题,请参考以下文章
从 C# 中的 List<T> 中选择 N 个随机元素的算法[重复]
从 List<OwnStruct> 返回 List<T> 的方法,其中 List<T> 仅包含 List 中所有 OwnStructs 的一个属性(C#)[重复]