读书人

关于linq的两个有关问题

发布时间: 2013-09-28 10:01:20 作者: rapoo

关于linq的两个问题
通过linq查询出如下结果,
关于linq的两个有关问题
实现的语句为:


var result1 = from a in t.T_BaseBookInfo
join b in t.T_BorrowInfoHsty //表
on a.GUID equals b.BookID
join c in t.T_BaseBookInfo //表
on b.BookID equals c.GUID
join d in t.T_Press
on c.PressCode equals d.PressCode
select new BorrowRankingModel //BorrowRankingModel 为自建模型
{
GUID = b.BookID,
PressName=d.PressName,
Author=c.Author,
BookTitle=c.BookTitle
};

我想根据最后一列绑定的字段(字段为“GUID”)分组,把guid相同的合并成一条,“流通次数”那列中放入条数,并从大到小排列,在第一列写入1,2,3,4……序号(这个序号的问题我发现用个 ++ 的方法不行这个方法我行不通)
linq 合并
[解决办法]
以为你的是LINQ2SQL, LINQ2EF不支持SELECT的重载方法,可以这样:

var result1 = (from a in t.T_BaseBookInfo
join b in t.T_BorrowInfoHsty //表
on a.GUID equals b.BookID
join c in t.T_BaseBookInfo //表
on b.BookID equals c.GUID
join d in t.T_Press
on c.PressCode equals d.PressCode
select new BorrowRankingModel
{
GUID = b.BookID,


PressName=d.PressName,
Author=c.Author,
BookTitle=c.BookTitle
}).AsEnumberable().GroupBy(x=>x.GUID)
.Select((g,i)=> new BorrowRankingModel
{
排名=i+1,
GUID = g.Key,
流通次数=g.Count(),
PressName=g.First().PressName,
Author=g.First().Author,
BookTitle=g.First().BookTitle
};

读书人网 >SQL Server

热点推荐