LINQ根据项目值获取不同的记录
我有以下LINQ查询LINQ根据项目值获取不同的记录,linq,entity-framework,linq-to-sql,linq-to-entities,Linq,Entity Framework,Linq To Sql,Linq To Entities,我有以下LINQ查询 var unallocatedOrders = (from orderLine in context.OrderLineItemDboes where (orderLine.Status == unallocated || orderLine.Status == null) && orderLine.orderline.order.order_status_fk == verified group orderLine
var unallocatedOrders = (from orderLine in context.OrderLineItemDboes
where (orderLine.Status == unallocated || orderLine.Status == null)
&& orderLine.orderline.order.order_status_fk == verified
group orderLine
by new { orderLine.orderline.ol_id,orderLine.orderline.order.order_id }
into g
select new { OrderLineId = g.Key.ol_id, Count = g.Count(), OrderId = g.Key.order_id })
.ToList();
上面的查询以以下方式给我结果
Order1 ol1 2
order1 ol2 3
order1 ol3 1
order2 ol1 1
order2 ol2 2
order3 ol1 4
order3 ol2 3
order3 ol3 2
我需要根据订单ID遍历上面的列表,并需要获取相应的行和数量。
我需要把这行id和数量输入字典。
有人能建议我怎么做吗
谢谢以下是使用GroupBy选择项目的方法。(您的问题并没有真正指定如何使用这些行,所以我只是将它们输出到调试控制台。)
您可以使用
ToDictionary
进行字典查找
// two-level lookup: 1) OrderId 2) OrderLineId
var lookup = new Dictionary<int, Dictionary<int, long>>();
foreach (var group in unallocatedOrders.GroupBy(row => row.OrderId))
{
// add each order to the lookup
lookup.Add(group.Key, group.ToDictionary(
// key selector
keySelector: item => item.OrderLineId,
// value selector
elementSelector: item => item.Count()
));
}
//两级查找:1)OrderId 2)OrderLineId
var lookup=newdictionary();
foreach(unallocatedOrders.GroupBy(row=>row.OrderId)中的var组)
{
//将每个订单添加到查找中
lookup.Add(group.Key,group.ToDictionary(
//键选择器
keySelector:item=>item.OrderLineId,
//值选择器
elementSelector:item=>item.Count()
));
}
谢谢您的回复。我能把这个OrderLineId和计数放到字典里吗?@Naresh你是说像字典那样,第一个是顺序查找,第二个让你按行号查找计数?
// two-level lookup: 1) OrderId 2) OrderLineId
var lookup = new Dictionary<int, Dictionary<int, long>>();
foreach (var group in unallocatedOrders.GroupBy(row => row.OrderId))
{
// add each order to the lookup
lookup.Add(group.Key, group.ToDictionary(
// key selector
keySelector: item => item.OrderLineId,
// value selector
elementSelector: item => item.Count()
));
}