1
考慮下面的例子:LINQ Where(),如果我需要獲取所有內容,該怎麼辦?
public List<Allergy> GetAllergies(int? ingredientId = null)
{
var allergies = new List<Allergy>();
var preSelect = ingredientId != null
? _dataContext.Ingredients.Where(x=> x.Id == ingredientId).SelectMany(x=>x.Allergies.AsQueryable())
: _dataContext.Allergies.AsQueryable();
preSelect.ToList().ForEach(x =>
{
var a = Mapper.Map<Database.Allergy, Allergy>(x);
allergies.Add(a);
});
return allergies;
}
這一工程,但我相信這是可能擺脫空檢查的一部分,並得到所有成分,如果ingredientId
爲null正確的,在Where()
體。我們怎麼做到這一點?還有任何其他建議,以改善這段代碼將不勝感激。
'X => x.Id == NULL || x.Id == ingredientId'或'x =>!(x.Id!= null && x.Id!= ingredientId)'我會想。 (我添加了第二種形式,因爲Resharper有時會抱怨第一種,呵呵。) – 2011-06-07 17:38:37