gpt4 book ai didi

c# - Distinct() 返回 List<> 返回重复项

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

我有一个传递到 Web 服务的过滤器列表,我遍历集合并执行 Linq 查询,然后添加到产品列表,但是当我执行 GroupBy 时和 Distinct()它不会删除重复项。我正在使用 IEnumerable因为当你使用 Disinct它将它转换为 IEnumerable .如果你知道如何更好地构造它并使我的函数返回一种类型 List<Product>将不胜感激。

这是我在 C# 中的代码:

if (Tab == "All-Items")
{
List<Product> temp = new List<Product>();
List<Product> Products2 = new List<Product>();
foreach (Filter filter in Filters)
{
List<Product> products = (from p in db.Products where p.Discontinued == false
&& p.DepartmentId == qDepartment.Id
join f in db.Filters on p.Id equals f.ProductId
join x in db.ProductImages on p.Id equals x.ProductId
where x.Dimension == "180X180"
&& f.Name == filter.Name /*Filter*/
select new Product
{
Id = p.Id,
Title = p.Title,
ShortDescription = p.ShortDescription,
Brand = p.Brand,
Model = p.Model,
Image = x.Path,
FriendlyUrl = p.FriendlyUrl,
SellPrice = p.SellPrice,
DiscountPercentage = p.DiscountPercentage,
Votes = p.Votes,
TotalRating = p.TotalRating
}).ToList<Product>();

foreach (Product p in products)
{
temp.Add(p);
}

IEnumerable temp2 = temp.GroupBy(x => x.Id).Distinct();
IEnumerator e = temp.GetEnumerator();
while (e.MoveNext()) {
Product c = e.Current as Product;
Products2.Add(c);
}
}
pf.Products = Products2;// return type must be List<Product>
}

最佳答案

您需要覆盖 Equals GetHashCode 以按值比较 Product

关于c# - Distinct() 返回 List<> 返回重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176818/

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