【问题标题】:Linq to Entities Distinct ClauseLinq to Entities Distinct Clause
【发布时间】:2011-06-29 10:25:53
【问题描述】:

我想在下面的代码中添加一个distinct。我无法弄清楚确切的语法。提前致谢。

var testdates = (from o in db.FMCSA_ME_TEST_DATA
                 orderby o.DATE   
                 select new
                 {
                    RequestDate = o.DATE
                 });

【问题讨论】:

    标签: c# sql linq-to-entities


    【解决方案1】:

    使用Distinct() 扩展方法。

    请注意,Distinct() 可能会否定现有的orderby(我在 LINQ to SQL 中注意到了这一点),因此您可能想在之后使用OrderBy() 方法。

    var testdates = (from o in db.FMCSA_ME_TEST_DATA
                     select new
                     {
                         RequestDate = o.DATE
                     }).Distinct().OrderBy(x => x.RequestDate);
    

    【讨论】:

    • 你确定 Distinct() 否定订单吗?我没有看到这种行为(运行类似的查询),如果我看到了会非常惊讶
    • @Adam - 我遇到了 LINQ to SQL 的 OrderBy/Distinct 问题,但对于其他 LINQ 提供程序来说可能不是问题。见programminglinq.com/blogs/marcorusso/archive/2008/07/20/…
    • 哇 - 不知道那个错误。我希望这在 EF4 中得到修复,尽管它不应该影响 this 查询。 +1 用于发布。
    • @Adam - 是的,这很烦人 - 特别是因为 IQueryable 在理论上意味着您可以对不同的提供者使用相同的查询。在实践中,你必须意识到这样的错误(或者拔掉你的头发)。
    【解决方案2】:
    var testdates = (from o in db.FMCSA_ME_TEST_DATA
                     orderby o.DATE   
                     select new
                     {
                        RequestDate = o.DATE
                     }).Distinct();
    

    诀窍是将您的查询包装在括号中,这样您就可以调用您已经做过的不同方法,所以您只需要在最后添加方法调用即可。

    【讨论】:

      【解决方案3】:

      似乎这样应该可以:

                  var testdates = (
                              from o in db.FMCSA_ME_TEST_DATA
                              orderby o.DATE
                              select new { RequestDate = o.DATE }
                              ).Distinct();
      

      查看此链接:http://msdn.microsoft.com/en-us/vcsharp/aa336761.aspx#distinct2

      【讨论】:

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