c# - LINQ 效率
问题描述
考虑以下 LINQ 语句:
var model = getModel();
// apptId is passed in, not the order, so get the related order id
var order = (model.getMyData
.Where(x => x.ApptId == apptId)
.Select(y => y.OrderId));
var orderId = 0;
var orderId = order.LastOrDefault();
// see if more than one appt is associated to the order
var apptOrders = (model.getMyData
.Where(x => x.OrderId == orderId)
.Select(y => new { y.OrderId, y.AppointmentsId }));
此代码按预期工作,但我不禁认为有一种更有效的方法来实现目标(一次调用 db )。
有没有办法将上面的两个 LINQ 语句合并为一个?对于这个问题,请假设我需要使用 LINQ。
解决方案
您可以使用 GroupBy 方法按 OrderId 对所有订单进行分组。应用 LastOrDefault 和 ToList 后,您将获得与上述代码相同的结果。
这是一个示例代码:
var apptOrders = model.getMyData
.Where(x => x.ApptId == apptId)
.GroupBy(s => s.OrderId)
.LastOrDefault().ToList();
推荐阅读
- java - Wildfly 卡在启动模式
- regex - 段落以大写字母开头,以标点符号结尾
- swap - OpenVz 7 如何处理交换?
- joomla - RSFORMS 感谢信息显示提交 ID
- mysql - 加入年份范围内的表时出现意外结果
- python - 嗨,如何删除字符串中的一些符号并列出其余单词?
- javascript - javascript中的手风琴选择器
- azure - Azure VM RHEL 自定义脚本扩展:未找到 script.sh 错误
- eclipse - 切换到从 atlassian jira 创建的 Eclipse 中的分支
- visual-studio-code - VSCode v1.28.2如何去掉调试红点