linq哪里收集的数量大于

时间:2014-05-13 03:27:47

标签: c# linq

我有一个有集合的类,我想选择那些对象的集合,其集合的数量大于特定值。

以下是我班级的样本

class Tag{

    public int Id { get; set; }
    ....
    public IList<Article> Articles { get; set; }

} 

我已尝试使用此linq代码

var topTag = _tagRepo.SearchAll(ActiveState.ACTIVE)
                     .Where(t => t.Articles.Count > 50)
                     .ToList();

但结果无效,仍有许多标签对象的文章少于50。 我的代码出了什么问题?我做错了吗?

---看到Agent Shark回答后发现错误但已被删除---

我忘了在Count(x =&gt; ..)中添加函数,因此标签文章不包含过去的文章。现在我的代码应该可以工作..

这是我更新的代码:

var topTag = _tagRepo.SearchAll(ActiveState.ACTIVE)
                     .Where(t => t.Articles.Count(a => a.ReleaseDate >= DateTime.Now.Date ) > 50)
                     .ToList();

非常感谢你们:D

1 个答案:

答案 0 :(得分:0)

表达式的一个小优化:

var now = DateTime.Now.Date;
const int lowArticles = 50;
var topTag = _tagRepo.SearchAll(ActiveState.ACTIVE)
      .Where(t => t.Articles.Where(a => a.ReleaseDate >= now).Take(lowArticles + 1).Count() > lowArticles)
      .ToList();