gpt4 book ai didi

c# - Linq Distinct 仅在下一行匹配

转载 作者:太空狗 更新时间:2023-10-29 21:01:17 25 4
gpt4 key购买 nike

我有一个包含以下信息的数据表:

365.00
370.00
369.59
365.00
365.00 -> match with previous item
365.00 -> match with previous item

我只需要删除下一个匹配项,像这样:

365.00
370.00
369.59
365.00

我试过:

(from articlespricehistory in dt.AsEnumerable()
select new
{
articlepricehistory_cost = articlespricehistory.Field<Double>("articlepricehistory_cost")
})
.DistinctBy(i => i.articlepricehistory_cost)
.ToList();

结果:

365.00
370.00
369.59

有什么想法吗?

最佳答案

另一种方法:

public static IEnumerable<T> MyDistinct<T>(this IEnumerable<T> items) 
{
T previous = default(T);
bool first = true;
foreach(T item in items)
{
if (first || !Equals(previous, item))
{
first = false;
previous = item;
yield return item;
}
}
}

或者,根据要求,使用选择器

public static IEnumerable<T> MyDistinct<T, U>(this IEnumerable<T> items, Func<T, U> selector) 
{
U previous = default(U);
bool first = true;
foreach(T item in items)
{
U current = selector(item);
if (first || !Equals(previous, current))
{
first = false;
previous = current;
yield return item;
}
}
}

关于c# - Linq Distinct 仅在下一行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33070893/

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