假设我有一个带有底层数据存储库的搜索模块,并且要求从搜索查询中返回最多 25 个结果。我可以通过 Take() 操作强制执行此操作:
IEnumerable<Contact> Search(string name)
{
// validation/cleanup on name parameter
IEnumerable<Contact> matching = _repository.Search(name);
return matching.Take(25);
}
接下来,假设如果返回超过 25 个结果(即搜索参数太宽泛),我有一个额外的要求抛出异常。有没有一种直接的方法可以用 LINQ 做到这一点?到目前为止,我最接近的是比最大数量多取一个并使用它:
IEnumerable<Contact> Search(string name)
{
// validation/cleanup on name parameter
var matching = _repository.Search(name);
var toReturn = matching.Take(26).ToList();
if (toReturn.Count() > 25)
{
throw new Exception("Too many results");
}
return toReturn;
}
然而,这似乎比必要的有点笨拙。