【问题标题】: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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多