如何在 LINQ 中查找“不同的”记录?

How to find `Distinct` records in LINQ?

我想在 entity framework 中查找 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 不起作用。它将 return 所有条目(重复)。

Distinct 不起作用,可能是因为 CalendarList 不可比较。 试试这个:

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

您可以使用GroupBy

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