Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ根据项目值获取不同的记录_Linq_Entity Framework_Linq To Sql_Linq To Entities - Fatal编程技术网

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

我有以下LINQ查询

 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()
    ));
}