Linq中集合计数大于

本文关键字:大于 集合 Linq | 更新日期: 2023-09-27 18:02:56

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

这是我的类的一个例子

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 => ..)中添加函数,所以标签的文章不包括过去的文章。现在我的代码有工作,因为它应该…

这是我更新的代码:

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

Linq中集合计数大于

表达式的一个小优化:

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();