Linq 使用 select new 中的值来计算另一个字段

标签 linq

是否可以在 linq 中执行以下操作,在我的 select new 中我使用 TotalOrderItems 中的值作为 TotalInStockItems 计算的一部分?

var Order = (from o in orderItems
             select new ShippingOrder { OrderId = orderItems.OrderId
                                        TotalOrderItems = orderItems.GroupBy(x => x.Sku).Count(),
                                        TotalInStockItems = TotalOrderItems - orderItems.Where(x => x.InStock =='F').GroupBy(x => x.Sku).Count(),
                                       }).ToList();

最佳答案

尝试使用let clause (C# Reference)存储该值以供稍后在查询中使用

(from o in orderItems
 let totalOrderItems = orderItems.GroupBy(x => x.Sku).Count()
 select new ShippingOrder { 
     OrderId = o.OrderId
     TotalOrderItems = totalOrderItems,
     TotalInStockItems = totalOrderItems - orderItems.Where(x => x.InStock =='F').GroupBy(x => x.Sku).Count(),
 }).ToList();

关于Linq 使用 select new 中的值来计算另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43919823/

相关文章:

c# - 为其中包含嵌套实体的实体生成动态选择表达式

c# - 如何将数据表记录转换为自定义类?

c# - Linq OrderBy().ThenBy() 方法序列的时间复杂度是多少?

c# - 按另一个字符串列表对字符串列表进行排序

c# - 具有多个组作为层次结构的 GroupBy

c# - 将 Generic.List<int?> 转换为 Generic.List<int>

c# - LINQ: "select new {e.FName, e.LName}"和 "select (e.FName, e.LName)"之间的区别?

c# - Linq 中的字母 GroupBy 有一个扭曲

c# - 在 C# 中使用 Newtonsoft.Json.Linq 查询 JSON 操作日期字符串

sql - LINQ SQL 附加,更新检查设置为从不,但仍然存在并发冲突