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());