【问题标题】:How to find `Distinct` records in LINQ?如何在 LINQ 中查找“不同”记录?
【发布时间】:2015-04-24 10:02:59
【问题描述】:
我想在实体框架中查找distinct 记录。我的代码如下
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();
这里 Distinct 不起作用。它将返回所有条目(重复)。
【问题讨论】:
标签:
c#
linq
ef-code-first
entity-framework-5
【解决方案1】:
Distinct 不起作用,可能是因为 CalendarList 不可比较。
试试这个:
var distinctYear = _objCalRepos
.GetDetails()
.Select(o => o.Mdate.Year.ToString())
.Distinct()
.AsEnumerable()
.Select(o => new CalendarList { Mdate = o }))
.ToList();
【解决方案2】:
您可以使用GroupBy
var distinctYear = _objCalRepos
.GetDetails()
.Select(o => new CalendarList { Mdate = o.Mdate.Year.ToString() })
.GroupBy(cl => cl.Mdate )
.Select(g => g.First())
.ToList();