gpt4 book ai didi

c# - 将 2 个列表与 foreach 循环进行比较,并根据未找到的项目创建新列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:05 24 4
gpt4 key购买 nike

对于发布这样一个看似简单的问题,我深表歉意。我知道已经发布了许多类似的问题(在发布我的问题之前我已经看过其中的许多问题),但我很难将答案应用到我的情况中。我是 C# 的新手,非常感谢您的投入和帮助。

我如何将我的 2 个 Listsforeach 循环进行比较,并创建一个新的 List 并找到其中不存在的记录我的比较?

下面是我已有的代码大纲,以及对需要发生的事情的评论:

private void updateHolidays()
{
List<Holiday> localHolidays = getLocalHolidays();
List<Holiday> remoteHolidays = getRemoteHolidays();

List<Holiday> holidayDifference = new List<Holiday>();

foreach (Holiday holiday in remoteHolidays)
{
if (true) // holiday does not exist in localHolidays
{
// add holiday to holidayDifference
holidayDifference.Add(holiday);
}
}

createNewHolidays(holidayDifference);
}

提前致谢!

最佳答案

最简单的方法是使用 LinQ。 Except 方法返回源中不存在于第二个列表中的所有项目。

holidayDifference = remoteHolidays.Except(localHolidays).ToList();

Except 方法接受可选的第二个参数来自定义比较。如果你不通过 IEqualityComparer<T> Holiday.Equals 的标准比较方法将被使用。或者,您可以覆盖此方法而不是传递比较器。

像大多数 LinQ 方法一样, Except 返回 IEnumerable<T> , 这可以很容易地转换为 List<T> ToList 方法。

MSDN 文档内嵌链接。


如果您仍想自己实现,可以使用 Contains List<T> 的方法:

foreach (Holiday holiday in remoteHolidays)
{
if (!localHolidays.Contains(holidy))
{

Contains 的替代品将是 LinQs Any 这允许您将对象与函数/lamda 表达式进行比较。

关于c# - 将 2 个列表与 foreach 循环进行比较,并根据未找到的项目创建新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38872604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com