我有一些客户和相关订单.
有时我想看到每个客户的所有订单 – 直截了当.
其他时候我想看看每个客户的最后订单,如果他们没有订单我还是想看他们.
继承我的LINQ伪代码:
from customers in DataSet.Customers join orders in DataSet.Orders on customers.CustomerId equals orders.CustomerId into customerOrders let customerLastOrder = customerOrders.Select(CustomerId,OrderAmount) .OrderByDescending(OrderTimestamp) .GroupBy(CustomerId)
然后我想要总计所有客户最后订单.
我不在那里,你可以看到 – 任何帮助真的很感激.
谢谢,乔
解决方法
我怀疑你想要:
from customer in DataSet.Customers join order in DataSet.Orders on customer.CustomerId equals order.CustomerId into customerOrders select new { CustomerId = customer.Id,LastOrderId = customerOrders.OrderByDescending(order => order.OrderTimestamp) .Select(order => order.OrderId) .FirstOrDefault() };
无需再执行任何分组 – 群组加入(加入…)已经为您完成了这项任务.您正在查看单个客户的订单,因此您只需要订购它们,选择ID,然后使用FirstOrDefault()获取有序序列中的第一个值(如果序列为空,则为null).
请注意,我更改了范围变量的名称 – 在任何一点,客户指的是单个客户,而订单指的是单个订单.为了便于阅读,在您的查询中保持这种清晰的东西是值得的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。