从列表中找到不同的元素C#

时间:2013-03-21 04:55:50

标签: c# list distinct-values

我有一个名为Product

的课程
public class Product
{
    public string Name{ get; set; }

    public int ProductId{ get; set; }

}

我有一个产品列表,其中包含相同的Name但不同的ProductId

我希望从product.Name

列表中获取不同的产品

即。如果列表是

var fullproductList = {
        Name: product,
        ProductId: 1
    }, {
        Name: product,
        ProductId: 2
    }, {
        Name: product,
        ProductId: 3
    };

我想要任何一个上述产品。

我希望在没有这样循环的情况下实现这个目标:

List<Product> distinctProducts= new List<Product>();

var distictproductName=fullSubjectList.Select(x => x.Name).Distinct().ToList();

foreach (var item in distictproductName)
{
    distinctProducts.Add(fullproductList.Where(x=>x.Name==item).FirstOrDefault());
}

有什么建议吗?

2 个答案:

答案 0 :(得分:9)

使用MoreLinq,您可以将Distinct与lambda:

一起使用
fullSubjectList.DistinctBy(x => x.Name).ToList();

答案 1 :(得分:2)

在名称上使用linq和group by。这将给你独特的。 请看一下这个答案的一些想法:LINQ: Distinct values