【问题标题】:How to fetch entries from multiple tables in Entity framework?如何从实体框架中的多个表中获取条目?
【发布时间】:2020-05-21 03:00:06
【问题描述】:

在我的应用程序中,我需要连接两个表中的数据并将它们显示为单个列表。列表需要根据日期进行排序(日期在两个表中都可用)并且它应该支持分页。这两个表彼此不相关。他们唯一的共同点就是日期。我们该怎么做?

【问题讨论】:

标签: .net entity-framework


【解决方案1】:

假设您有代表 2 个表的类:AB

public class A
{
  public DateTime Date { get; set; }
  public string PropA { get; set; }
}
public class B 
{
  public DateTime Date { get; set; }
  public string PropA { get; set; }
}

如果您想将它们一起显示,您需要一个具有所有属性的模型,如下所示:

public class ResultDto 
{
  public DateTime Date { get; set; }
  public string PropA { get; set; }
  public string PropB { get; set; }
}

然后将它们放在一起并按日期排序,dbContext 上的查询将如下所示:

var result = _dbContext
                .A.Select(a => new ResultDto()
                {
                    PropA = a.PropA,
                    Date = a.Date,
                    PropB = null
                }).Concat(_dbContext.B.Select(b => new ResultDto()
                {
                    PropA = null,
                    Date = b.Date,
                    PropB = b.PropB
                }))
                .OrderByDescending(r => r.Date)
                .ToList();

顺便说一句,由于在 IQuerable 上调用了此 Select,因此您必须选择所有属性(即使它们默认为 NULL)

还有一个我今天回答的类似问题: Join and sort 2 not related tables

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2019-12-28
    • 2013-11-16
    • 1970-01-01
    • 2015-10-17
    • 2022-01-23
    • 2022-11-26
    相关资源
    最近更新 更多