在内部对象属性上使用Distinct

时间:2012-08-28 19:07:37

标签: linq

我有一组数据,其中包含一个名为Approvals的集合。 Approvals对象具有属性调用ApplicationName。我想要一份所有Distinct Approvals ApplicationNames的列表。因此,如果我有一份批准名单,其中包含Nick,Nick,Jack,Daniel的应用名称,我想返回Nick,Jack,Daniel的整个审批对象。或者至少只是名单Nick,Jack,Daniel

这对我不起作用..

theApplicationNames = theData.Approvals.Select(c => new WebsiteApplicationInfo 
                                                    {
                                                        Name=c.ApplicationName,
                                                        ID=c.ApplicationId
                                                    }).Distinct().ToList();

3 个答案:

答案 0 :(得分:1)

如果您需要不同名称的列表,请使用

var names = theData.Approvals.Select(a => a.ApplicationName).Distinct();

这将导致所有名称的列表(可能是字符串?)。

您的版本“无效”的一个可能原因是您在.Distinct()个对象的集合上使用WebsiteApplicationInfo,这些对象可能没有实现正确的相等比较。但是,如果不知道“不工作”是什么意思,我们就无法确定。

答案 1 :(得分:1)

theData.Approvals.Select(a => a.ApplicationName).Distinct();

答案 2 :(得分:0)

如果你投射一个属性,你就可以区分它。如果要投射匿名类型,则需要使用GroupBy技巧或创建传递给Distinct的自定义IComparer。您应该能够使用以下搜索找到相当多的解决方案:https://stackoverflow.com/search?q=distinctby&submit=search