LINQ到SQL GroupBy:生成一个具有单个DB trip的2级分层集合
假设数据库中有一个表,它有三列:代理ID、名称和值 我想获得一组按机构ID分组的配对 我该怎么做?我尝试了下面这样的方法,效果很好,但是为每个代理打了一个DB电话LINQ到SQL GroupBy:生成一个具有单个DB trip的2级分层集合,linq,group-by,Linq,Group By,假设数据库中有一个表,它有三列:代理ID、名称和值 我想获得一组按机构ID分组的配对 我该怎么做?我尝试了下面这样的方法,效果很好,但是为每个代理打了一个DB电话 from div in db.AgencyDivisionsENT group div by div.AgencyId into NamePairCollection select new KeyValuePair<int, IEnumerable<DivisionResults>>(N
from div in db.AgencyDivisionsENT
group div by div.AgencyId into NamePairCollection
select new KeyValuePair<int, IEnumerable<DivisionResults>>(NamePairCollection.Key,
NamePairCollection.Select(k => new DivisionResults
{
Name = k.Name,
Value = k.Value
));
从db.agencydivision中的div发送
按div.AgencyId将div分组到NamePairCollection中
选择新的KeyValuePair(NamePairCollection.Key,
NamePairCollection.Select(k=>newdivisionresults
{
Name=k.Name,
值=k.值
));
我想以这样的方式结束:IEnumerable使用链语法,它将是:
db.AgencyDivisionsENT
.GroupBy(x=>x.AgencyId)
.ToDictionary(x=>x.Key, g=>g.Select(x=>new { k.Name, k.Value }).ToArray());
使用链语法,它将是:
db.AgencyDivisionsENT
.GroupBy(x=>x.AgencyId)
.ToDictionary(x=>x.Key, g=>g.Select(x=>new { k.Name, k.Value }).ToArray());
避免此类查询往返的最简单方法是在客户端分组-通过调用.AsEnumerable(): 这绝不是低效的——只要:
- 使用initial.select语句仅从服务器中选择所需的数据
- 如果需要.Where语句来过滤数据,则将其放在.AsEnumerable之前
- 您选择的是细节行(如本例所示),而不仅仅是聚合
- 使用initial.select语句仅从服务器中选择所需的数据
- 如果需要.Where语句来过滤数据,则将其放在.AsEnumerable之前
- 您选择的是细节行(如本例所示),而不仅仅是聚合