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
表达式的一个小优化:
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();