我在 C# 中使用某些条件制作了一些列表。因此,如果任何条件为假,该列表仍然为空。但我仍然需要将它与其他列表相交以获得最终输出。任何建议如何做是吗?
作为简单的静态方法:
static IEnumerable<T> Intersect<T>(params IEnumerable<T>[] lists)
{
return lists.Where(l => l.Any()).Aggregate((l1, l2) => l1.Intersect(l2));
}
你可以这样使用它
var list1 = new List<string>() { "abc", "cde" };
var list2 = new List<string>() { "abc", "xyz" };
var list3 = new List<string>();
var arrayOfLists = new List<string>[] {list1, list2, list3};
var paramList= Intersect(list1, list2, list3);
var arrayList = Intersect(listOfLists);
注意传递数组而不是列表,否则 T 是返回原始列表的列表。
我是一名优秀的程序员,十分优秀!