c#在多个列表之间查找相同的项目,但跳过空列表
我有三张单子c#在多个列表之间查找相同的项目,但跳过空列表,c#,list,C#,List,我有三张单子 List<User> filterRes1 = new List<User>(); List<User> filterRes2 = new List<User>(); List<User> filterRes3 = new List<User>(); 这是可行的,但是如果一个列表不包含任何内容,结果总是空的 我如何跳过空列表,仍然可以在多个列表之间获取comon
List<User> filterRes1 = new List<User>();
List<User> filterRes2 = new List<User>();
List<User> filterRes3 = new List<User>();
这是可行的,但是如果一个列表不包含任何内容,结果总是空的
我如何跳过空列表,仍然可以在多个列表之间获取comon项
另外,我如何检查列表是否为空,而不仅仅是“空”
谢谢大家! new[]{filterRes1,filterRes2,filterRes3}
.Where(x=>x!=null&&x.Any())
.Aggregate((IEnumerable)null,(t,l)=>t==null?l:t.Intersect(l))
托利斯先生()
因此,在纯集合数学中,您试图找到3个集合的交集。如果其中一个集合为空,则不存在交点,这是正确的结果。所以,也许你想重构它来整合集合,然后寻找重复的集合?复制品会告诉你两组之间有交叉点。它不会告诉你复制品来自哪里,但这似乎不是你的问题
您可以使用.AddRange或.Concat功能,它们不会删除重复项,并将保持列表顺序
不要使用Union,因为这将删除重复项。这是否回答了您的问题?你的
Aggregate
可以简化为Aggregate((t,l)=>t.Intersect(l))
,但这与重复答案基本相同。
decListWithFiltersFinal = filterRes1
.Intersect(filterRes2)
.Intersect(filterRes3).ToList();