gpt4 book ai didi

c# - 列表的交集

转载 作者:数据小太阳 更新时间:2023-10-29 07:21:04 24 4
gpt4 key购买 nike

有没有更好、更优雅、更简洁的方法来获取 C# 中两个列表的交集?

在 C# 中,计算日期列表交集的方法是:

    public List<DateTime> dates_common(Timeserie ts1, Timeserie ts2)
{
var dt1 = new HashSet<DateTime>(ts1.dates);
var dt2 = new HashSet<DateTime>(ts2.dates);
dt1.IntersectWith(dt2);
var dt = new DateTime[dt1.Count];
dt1.CopyTo(dt);
return new List<DateTime>(dt);
}

在 Ruby 中,可以这样做:

def dates_common(ts1, ts2)
dt1 = ts1.dates.to_set
dt2 = ts2.dates.to_set
return dt1.intersection(dt2).to_a
end

这种笨拙的根本原因是 IEnumerable 与具体容器和数组之间的不对称。

我一直对 C# 标准库的设计如此糟糕感到惊讶,因为这种问题一直都在发生。

有没有更好的方法,这意味着更优雅和简洁的方法?

最佳答案

您可以使用 Enumerable.IntersectEnumerable.ToList extension methods如下得到非常优雅简洁的代码:

public List<DateTime> dates_common(Timeserie ts1, Timeserie ts2)
{
return ts1.dates.Intersect(ts2.dates).ToList();
}

关于c# - 列表的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184933/

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