【发布时间】:2017-10-10 17:49:02
【问题描述】:
我想用 lambda 表达式连接两个表:Order 和 OrderLogistics。
顺序如下:
public class Order{
public int ID { get; set; }
}
OrderLogistics 看起来像这样:
public class OrderLogistics{
public int ID { get; set; }
public int OrderID { get; set; }
}
我想通过 Order.ID 和 OrderLogistics.OrderID 加入他们。
我不明白如何使用此问题中的查询。 Lambda Expression for join
我知道的唯一写查询的方法是:
IQueryable<Order> listOfRecentOrders = Orders
.Where(x => x.OrderLogistics.DepartureDate == date
&& x.TypeID != 4
&& x.TypeID != 5
&& x.StatusID != 8
&& x.StatusID != 9
&& x.StatusID != 10
&& x.Customer.ID != null
&& x.IsDeleted == false
&& x.OrderLogistics.DepartureTime >= 100
&& x.OrderLogistics.DepartureTime <= 2400)
.OrderBy(x => x.OrderLogistics.DepartureTime)
.Take(8));
我不明白他们在用“var 查询”做什么。我如何在 MVC 中使用它? 上述方法在我的存储库中,结果将传递给控制器。
所以我想要的是一个可以使用 Order 属性和 OrderLogistics 属性的查询。我自己上面的查询不起作用,因为关系“x.OrderLogistics”不存在。
编辑: 我有:
IQueryable<Order> listOfRecentOrders =
还有:
var joined2 = from p in Order
join pType in OrderLogistics
on p.ID equals pType.OrderID
select (x => x.Order);
如何将joined2 分配给listOfRecentOrders?我在所有查询问题中都没有看到这个。这是最重要的部分。
问题: 我需要在连接两个表的地方进行查询。我想把它放在一个列表中并将这个列表传递给控制器,以便我可以在我的视图中使用数据。
【问题讨论】:
-
只需将
People替换为Order,将PeopleTypes替换为OrderLogistics,将PersonType替换为ID,将TypeID替换为OrderID...最后添加@ 987654336@ 在Take(8)之前。 -
我正在尝试这个 Haukinger。但它不是重复的。我也在问如何在 MVC 中实现这个我有点得到查询但是我如何使用joined或joined2?
-
How do I assign joined2 to listOfRecentOrders?- 如果类型匹配或根本不匹配(如果它们不匹配),则使用=。加入后,您有一个IEnumerable<some-anonymous-type>,并通过选择从中提取订单,因此您将获得一个IEnumerable<Order>。究竟是什么问题? -
查询数据库并不是真正的 MVC 特定的,请不要将多个主题混在一起。如果您提出要解决的特定(和简短)问题,而不是在没有明确解释您的目标的情况下编写一些问题代码,这也会有所帮助。 (实际上,我认为您有一些具体问题,但需要突出显示,以便每个人都可以将您的问题与您的解决方案尝试区分开来)