假設我有一個帶有基礎數據存儲庫的搜索模塊,並且要求從搜索查詢返回最多25個結果。我可以用取()操作執行此:返回最大數量的項目LINQ方式
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;
}
然而,這似乎比必要笨重了一點。
這哪裏是數字「25」來的?它是作爲參數傳遞的嗎? – Thousand
你可以只檢查'匹配'上的Count()嗎? –
'Single'方法與您的建議類似。 'SELECT TOP 2'並且在返回兩個時拋出一個錯誤。 –