简体   繁体   English

如何在LINQ中找到`Distinct`记录?

[英]How to find `Distinct` records in LINQ?

I want to find distinct records in entity framework. 我想在实体框架中找到distinct记录。 My code is as below 我的代码如下

var distinctYear = _objCalRepos
    .GetDetails()
    .Select(o => new CalendarList { Mdate = o.Mdate.Year.ToString() })
    .Distinct()
    .ToList();

ddlYear.DataSource = distinctYear;
ddlYear.DataTextField = "Mdate";
ddlYear.DataValueField = "Mdate";
ddlYear.DataBind();

Here Distinct not works. 这里区别不起作用。 It will return all entries(duplicated). 它将返回所有条目(重复)。

Distinct is not working, probably because CalendarList is not comparable. 区别不起作用,可能是因为CalendarList无法比较。 Try this: 尝试这个:

var distinctYear = _objCalRepos
    .GetDetails()
    .Select(o => o.Mdate.Year.ToString())
    .Distinct()
    .AsEnumerable()
    .Select(o => new CalendarList { Mdate = o }))
    .ToList();

You can use GroupBy 您可以使用GroupBy

var distinctYear = _objCalRepos
    .GetDetails()
    .Select(o => new CalendarList { Mdate = o.Mdate.Year.ToString() })
    .GroupBy(cl => cl.Mdate )
    .Select(g => g.First())
    .ToList();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM