我怎么能在LINQ中这样做?
select
*
from customer c
left join order o on o.CustomerID = c.CustomerID
where o.OrderDate = (select MAX(OrderDate) from order where CustomerID = o.CustomerID )
Run Code Online (Sandbox Code Playgroud)
不担心重复,因为每天只会有一个订单.
我得到了LINQ中的左连接,但不确定子查询的放置方式和位置.
var query = from customer in clist
from order in olist
.Where(o => o.CustomerID == customer.CustomerID)
select new {
customer.CustomerID,
customer.Name,
customer.Address,
Product = order != null ? order.Product : string.Empty
};
Run Code Online (Sandbox Code Playgroud)
最终解决方案:
var query = from customer in clist
from order in olist
.Where(o => o.CustomerID == customer.CustomerID && o.OrderDate ==
olist.Where(o1 => o1.CustomerID == customer.CustomerID).Max(o1 => o1.OrderDate)
)
select new {
customer.CustomerID,
customer.Name,
customer.Address,
order.Product,
order.OrderDate
};
Run Code Online (Sandbox Code Playgroud)
没有任何lambda的另一个解决方案
var query = from customer in clist
from order in olist
where order.CustomerID == customer.CustomerID && order.OrderDate ==
(from o in olist
where o.CustomerID == customer.CustomerID
select o.OrderDate).Max()
select new {
customer.CustomerID,
customer.Name,
customer.Address,
order.Product,
order.OrderDate
};
Run Code Online (Sandbox Code Playgroud)
Alb*_*nbo 16
这或多或少是字面翻译
var query = from customer in clist
from order in olist
.Where(o => o.CustomerID == customer.CustomerID &&
o.OrderDate == olist
.Where(o => o.CustomerID == customer.CustomerID)
.Select(o => o.OrderDate).Max())
select new {
customer.CustomerID,
customer.Name,
customer.Address,
Product = order != null ? order.Product : string.Empty
};
Run Code Online (Sandbox Code Playgroud)
但我会重写
var query = from customer in clist
from order in olist
.Where(o => o.CustomerID == customer.CustomerID)
.OrderByDescending(o => o.OrderDate).Take(1)
select new {
customer.CustomerID,
customer.Name,
customer.Address,
Product = order != null ? order.Product : string.Empty
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10681 次 |
最近记录: |