LINQ查詢並沒有真正有全都是一種說法,你可以在部分建造。當你創建一個LINQ查詢它實際上並沒有做與源數據做任何事,它只是建立起來的,其建立在相互的IEnumerable/IQueryable的接口的表達式。只要你不通過枚舉或調用ToList()
等方法來執行它,那麼你可以繼續添加到查詢,它不會被執行。
你想是這樣的:
// create original query, no filters
var query = from x in whatever....;
// add each filter one by one
if (condition1)
{
query = query.Where(row => condition 1 expression);
}
if (condition2)
{
query = query.Where(row => condition 2 expression);
}
if (condition3)
{
query = query.Where(row => condition 3 expression);
}
if (condition4)
{
query = query.Where(row => condition 4 expression);
}
啊完美。這按預期工作。 – 2011-04-11 00:18:38