LINQ - 根据自定义函数返回的计数限制结果

时间:2014-08-07 23:55:49

标签: c# linq

我有以下代码,并希望在LINQ中返回此查询的有限子集。有限的子集将u.ID作为函数的参数,并计算与另一个表中的u.ID关联的记录数。

到目前为止,这就是我所拥有的。

 var res = from u in db.Users
                      where  id == u.WorkGroupID && jobCount(u.ID) > 0
                      select
                new
                {
                    ArtistID = u.ID,
                    ArtistName = u.FirstName + " " + u.LastName
                };

如何根据与每个u.ID关联的计数值修改此查询以限制返回记录的数量?

编辑:

下面的新查询。最后一行从上一次LINQ查询返回调用者列表。

  var res = from u in db.Users
                      where  id == u.WorkGroupID
                      select
                new
                {
                    // SELF
                    ArtistID = u.ID,
                    ArtistName = u.FirstName + " " + u.LastName
                };

            var res2 = res.ToList<dynamic>();
            var res3 = from row in res2.AsEnumerable()
                       where jobCount(row.ArtistID) > 0
                       select new
                         {
                             row.ArtistName,
                             row.ArtistID
                        };

            return res3.ToList<dynamic>();

1 个答案:

答案 0 :(得分:2)

使用群组加入:

from u in db.Users
join o in db.Other on u.ID equals o.UserID into grp
where grp.Any()
select new
{
    ArtistID = u.ID,
    ArtistName = u.FirstName + " " + u.LastName
};