好的,假设您有两个表:Order 和 OrderLine,由于某种原因,它们在数据库中没有外键关系(这是一个示例,请使用它)。现在,您想使用 Entity Framework 连接这两个表,并编写如下内容:
using (var model = new Model())
{
var orders = from order in model.Order
join orderline in model.OrderLine on order.Id equals orderline.OrderId into orderlines
from ol in orderlines.DefaultIfEmpty()
select new {order = order, orderlines = orderlines};
}
现在,上面将产生订单和订单线,左连接和所有,但它有很多问题:
- 简直丑陋
- 它返回一个匿名类型
- 它返回同一订单的多个实例,我必须在客户端执行 Distinct() 因为 orders.Distinct() 失败。
我正在寻找的是一个解决方案,它是:
- 漂亮的
- 返回静态众所周知的类型而不是匿名类型(我试图投影查询结果,但我遇到了 OrderLines 的问题)
- 在服务器端运行 Distinct
任何人?