c#Linq为每个组取5个对象

时间:2015-01-16 22:18:35

标签: c# linq

我尝试在每个组中显示Get 5 Object。 我尝试过这样的代码:

var BBS = (from bb in db.Object
           where SubjectList.Contain(bb.Type)
           select new ObjectModel {
               Subject = bb.Subject,
               CDate = bb.CDate
           }).GroupBy(a => a.BBSTypeSubject).Take(5);

但它不起作用。 然后我尝试使用Foreach

2 个答案:

答案 0 :(得分:0)

当您选择新的ObjectModel时,没有名为BBSTypeSubject的属性。你需要包含它。所以它应该是

select new ObjectModel {
 Subject = bb.Subject, 
 CDate = bb.CDate,
 BBSTypeSubject= ???
}

答案 1 :(得分:0)

首先,要意识到C#区分大小写,因此 需要 正确拼写TakeContains等函数名称。但是,只需使用GroupBy代替var BBS = (from bb in db.Object where SubjectList.Contains(bb.Type) select new ObjectModel { Subject = bb.Subject, CDate = bb.CDate }).GroupBy(a => a.BBSTypeSubject, (k, g) => g.Take(5)); 即可轻松解决此问题。

{{1}}

第二个参数允许您指定为每个组返回的结果对象。在这种情况下,我只需从组中取出前5个项目,然后返回它们。