Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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#_.net_List_Algorithm_Logic - Fatal编程技术网

C# 通过将对象列表与另一个列表进行比较,从对象列表中删除条目

C# 通过将对象列表与另一个列表进行比较,从对象列表中删除条目,c#,.net,list,algorithm,logic,C#,.net,List,Algorithm,Logic,我需要从一个列表中删除所有条目,比如说master[],其中存在另一个列表,即Dto.ListOfIds,比如说a[],它是一个列表。我有另一个列表,List,比如说b[],我需要与a[]进行比较,并从master[]中删除所有条目,其中a[]和b[]没有公共元素 添加一些代码片段..希望这有帮助 var projectIds = invoiceListRequestDto.ProjectIds.Split(",").Select(int.Parse).Distinct().

我需要从一个
列表中删除所有条目,比如说
master[]
,其中存在另一个列表,即
Dto.ListOfIds
,比如说
a[]
,它是一个
列表。我有另一个列表,
List
,比如说
b[]
,我需要与
a[]
进行比较,并从
master[]
中删除所有条目,其中
a[]
b[]
没有公共元素

添加一些代码片段..希望这有帮助

var projectIds = invoiceListRequestDto.ProjectIds.Split(",").Select(int.Parse).Distinct().ToList();
invoiceList.ForEach(invoice=>
      {
      var invoiceProjectIds = invoice.ProjectReferenceNo.Split(",").Select(int.Parse).Distinct().ToList();
      if(invoiceProjectIds.Any(x=> projectIds.Any(t=> x==t)))
       {
         //logic here               
       }
      });
发票列表为
master[]
,项目为
a[]
,发票项目为
[b]
。 实际上,
a[]
b[]
是由两个分开的字符串组成的[FYI]

正在添加一些示例数据

master[]=[{其他东西,b=“3,4,5,6”},a[]=[1,2]
b[]=[3,4,5,6]

这里,由于
a[]
b[]
没有公共元素,
master[]
在操作后应为空

谁能帮我解释一下这个逻辑


提前感谢。

为了简化操作,您可以添加一个助手方法来解析ID:

IEnumerable<int> ParseInts(string csv)
{
    return csv.Split(",").Select(int.Parse).Distinct();
}
或者您可以使用
List.RemoveAll
就地修改列表:

invoiceList.RemoveAll(x => !ParseInts(x.ProjectReferenceNo).Intersect(projectIds).Any());

不要用语言解释,请发布一些代码,上面有准备好的列表和数组,我们可以复制粘贴。你会在几分钟内得到答案。到目前为止,理解你的问题/场景需要花费大量的精力和时间。同意Mong的评论。起初我想LINQ除外,但后来那句话,我不知道是什么意思“删除master[]中的所有条目,其中a[]和b[]没有公共元素”-因此“如果a intersect b为空,则清除master”?可能不“说”任何内容。给出真实世界的示例,如“如果没有休病假的员工也休假,则清除当年的奖金列表”用代码段更新。.希望帮助请举例说明数据,什么是输入,什么是预期的输出,这将更容易理解您想要什么。@Anve添加了一个示例数据。.希望可以工作。.这在IQeryTable筛选方法中可以工作吗?
invoiceList.RemoveAll(x => !ParseInts(x.ProjectReferenceNo).Intersect(projectIds).Any());