我有两个列表。我想使用第二个列表中的元素过滤掉第一个列表。所以我有这段代码:
List<data> dataList = somedata;
IEnumerable<Filter> filterList = someFilterData;
然后我使用这段代码进行过滤:
foreach (var s in filterList)
{
dataList = dataList .Where(l => l.dataId!= s.Id).ToList();
}
有人可以建议这是否是一个足够好的方法,或者我们如何使用其他技术使它更好。注意:列表可能会变大,因此我们也在考虑性能。
最佳答案
你需要做的是只取那些在过滤器列表中找不到的项目。您可以使用循环以“老派”方式完成此操作:
foreach (var listItem in dataList)
{
foreach (var filterItem in filterList)
{
if (listItem == filterItem)
{
dataList.Remove(listItem);
continue;
}
}
}
或者您可以使用 LINQ 进行过滤:
dataList.Where(d => filterList.All(f => f.Id != d.dataId))
关于c# - 使用另一个列表的内容过滤一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32013810/