2011-04-10 71 views
2

我展示的產品列表,並有4個下拉列表中,通過這些數據進行過濾。幫助LINQ查詢和多個客戶端過濾器

如何建立一個LINQ查詢,可以將所有其他過濾器當前值考慮在內,而無需爲過濾器寫出每個可能的組合LINQ查詢?

我想從下拉一個生產向下,顯示這些產品,然後能夠過濾通過顏色等新成果後來,我將隱藏並不適用於新的過濾結果的過濾器。

website具有正是我試圖在左側做。不同之處在於我在autopostback上進行過濾(時間上有一個過濾器)。

回答

2

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); 
} 
+0

啊完美。這按預期工作。 – 2011-04-11 00:18:38