Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果其中一个列表为空,如何使多个列表相交?_C#_Asp.net Mvc 4 - Fatal编程技术网

C# 如果其中一个列表为空,如何使多个列表相交?

C# 如果其中一个列表为空,如何使多个列表相交?,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我用c#中的一些条件制作了一些列表。。因此,如果任何条件为false,该列表将保持为空。。但我仍然需要将其与其他列表相交以获得最终输出。。有什么建议吗?允许您这样做,即使其中一个IEnumerable为空 但是,只要至少有一个空列表,intersect结果将始终为空-这就是您需要的吗?允许您执行此操作,即使其中一个IEnumerable为空 但是,只要至少有一个空列表,intersect结果将始终为空-这是您需要的吗?如果我理解正确,您可以使用Count属性 List<Object>

我用c#中的一些条件制作了一些列表。。因此,如果任何条件为false,该列表将保持为空。。但我仍然需要将其与其他列表相交以获得最终输出。。有什么建议吗?

允许您这样做,即使其中一个
IEnumerable
为空

但是,只要至少有一个空列表,intersect结果将始终为空-这就是您需要的吗?

允许您执行此操作,即使其中一个
IEnumerable
为空


但是,只要至少有一个空列表,intersect结果将始终为空-这是您需要的吗?

如果我理解正确,您可以使用
Count
属性

List<Object> your_list = new List<Object>();
if(your_list.Count!=0){
// do your stuff
}
else{
//skip
}
列出您的_列表=新列表();
如果(您的_list.Count!=0){
//做你的事
}
否则{
//跳过
}

如果我理解正确,您可以使用
Count
属性

List<Object> your_list = new List<Object>();
if(your_list.Count!=0){
// do your stuff
}
else{
//skip
}
列出您的_列表=新列表();
如果(您的_list.Count!=0){
//做你的事
}
否则{
//跳过
}

因此,在您拥有所有列表后,将它们放入一个数组中,然后您可以按照下面的示例进行操作(假设您拥有所有字符串列表)

var list1=新列表();
var list2=新列表();
var list3=新列表();
var allLists=新列表[]{list1,list2,list3};
//需要确保您有>=1个列表
var结果=所有列表[0];
for(int i=1;i
因此,在您拥有所有列表后,将它们放入一个数组中,然后您可以按照下面的示例进行操作(假设您拥有所有字符串列表)

var list1=新列表();
var list2=新列表();
var list3=新列表();
var allLists=新列表[]{list1,list2,list3};
//需要确保您有>=1个列表
var结果=所有列表[0];
for(int i=1;i
作为简单的静态方法:

static IEnumerable<T> Intersect<T>(params IEnumerable<T>[] lists)
{
    return lists.Where(l => l.Any()).Aggregate((l1, l2) => l1.Intersect(l2));
}
static IEnumerable Intersect(params IEnumerable[]列表)
{
返回列表。其中(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);
var list1=newlist(){“abc”,“cde”};
var list2=新列表(){“abc”,“xyz”};
var list3=新列表();
var arrayOfLists=新列表[]{list1,list2,list3};
var paramList=Intersect(列表1、列表2、列表3);
var arrayList=相交(列表);

小心传递数组而不是列表,否则T是返回原始列表的列表。

作为简单的静态方法:

static IEnumerable<T> Intersect<T>(params IEnumerable<T>[] lists)
{
    return lists.Where(l => l.Any()).Aggregate((l1, l2) => l1.Intersect(l2));
}
static IEnumerable Intersect(params IEnumerable[]列表)
{
返回列表。其中(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);
var list1=newlist(){“abc”,“cde”};
var list2=新列表(){“abc”,“xyz”};
var list3=新列表();
var arrayOfLists=新列表[]{list1,list2,list3};
var paramList=Intersect(列表1、列表2、列表3);
var arrayList=相交(列表);


小心传递数组而不是列表,否则T是返回原始列表的列表。

“…一些使用某些条件的列表…”您能更具体地说明您拥有什么、想要什么、尝试了什么以及哪些不起作用吗?目前还不清楚。请提供一些您已经尝试过的代码示例。它将帮助其他用户更清楚地理解问题。您需要将空列表与非空列表相交吗?结果总是空的,你知道吗?你能提供示例数据吗?请显示所需的输入和输出。“…一些使用某些条件的列表…”您能否更具体地说明您拥有什么、您想要什么、您尝试了什么以及哪些不起作用?目前还不清楚。请提供一些您已经尝试过的代码示例。它将帮助其他用户更清楚地理解问题。您需要将空列表与非空列表相交吗?结果总是空的,你知道吗?你能提供示例数据吗?请显示所需的输入和输出。我认为列表在某些情况下可能是空的,这也是我的理解。我编辑了我的答案,以澄清我的意思是“始终”的范围我认为列表在某些情况下可能是空的,这也是我的理解。我编辑了我的答案,以澄清我的意思是“始终”的范围谢谢这有帮助!不客气。如果这是正确的解决方案,我将不胜感激地将其标记为答案。默认情况下,应将其添加到.NET Framework中。谢谢。。!!这有帮助!不客气。如果这是正确的解决方案,我将非常感激将其标记为答案。默认情况下,这应该添加到.NET Framework中。我按照Matt的说明将列表本身相交!正如马特所说的那样,我把名单本身划掉了!