【问题标题】:Entity Framework Distinct records from multiple tables实体框架来自多个表的不同记录
【发布时间】:2013-08-07 20:18:02
【问题描述】:

我试图通过加入多个表来获得不同的值。有人可以告诉我如何在下面的代码中做同样的事情吗?

请看下面的示例代码:

var distinctValues = (from a in dataContext.A_Table
                      join b in dataContext.B_Table on a.EmpID equals b.EmpID
                      join c in dataContext.C_Table on b.SomeID equals c.ID
                      where a.IsActive == true
                            && a.ID == id
                      select new NewClass()
                                 {
                                    ID = c.ID,
                                    Name = c.Name
                                 }).ToList();

【问题讨论】:

  • ToList()之前添加Distinct()就足够了。

标签: c# entity-framework-4 distinct


【解决方案1】:

嗯,这应该可以在没有很多变化的情况下工作,尽管我会完全用表达式来写:

var distinctValues = (from a in dataContext.A_Table
                      join b in dataContext.B_Table
                      on a.EmpID equals b.EmpID
                      join c in dataContext.C_Table
                      on b.SomeID equals c.ID
                      where a.IsActive == true
                      && a.ID == id
                      select new NewClass()
                      {
                          ID = c.ID,
                          Name = c.Name
                      }).ToList()
                      .GroupBy(x=>new {ID = x.ID,Name = x.Name})
                      .Select(x=>new {ID = x.Key.ID,Name = x.Key.Name});

【讨论】:

  • 我认为上面的代码只返回不同的名称,但我需要 NewClass 的不同对象(即具有 ID 和名称列)。您能告诉我如何以 NewClass 对象的形式返回不同的 ID 和名称吗?
  • 那么你应该用 GroupBy 改变 Distinct。检查我的更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 2013-06-30
  • 2016-08-09
  • 2021-09-21
相关资源
最近更新 更多