我想要做這樣的事情:動態過濾器4
var list = db.Respaldoes.Where(x => x.type == "Backup");
if (condicion1)
list.Where(x => x.entity == "GIELCJLT03");
if (condicion2)
list.Where(x => x.activity_type == "0");
我不知道這樣的事情是可能的,我得到的名單,但過濾器永遠不會應用。
我想要做這樣的事情:動態過濾器4
var list = db.Respaldoes.Where(x => x.type == "Backup");
if (condicion1)
list.Where(x => x.entity == "GIELCJLT03");
if (condicion2)
list.Where(x => x.activity_type == "0");
我不知道這樣的事情是可能的,我得到的名單,但過濾器永遠不會應用。
你可以嘗試這樣的事:
var list = db.Respaldoes.Where(x => x.type == "Backup");
if (condicion1)
list = list.Where(x => x.entity == "GIELCJLT03");
if (condicion2)
list = list.Where(x => x.activity_type == "0");
最初的列表時Where子句,x => x.type == "Backup"
,將被執行,它會給你你指的是最初的名單。然後,如果condicion1
爲真,則您將進行第二次調整,並將結果分配給列表。你再次執行了。只有當列表被請求被另一段代碼使用時,它纔會被執行 - 儘管名字執行了。第二屆會議也是如此。
非常感謝你,這是我需要的。 –
歡迎你。我很高興我的幫助。 – Christos
Where
返回IEnumerable<T>
,它延遲執行,直到稍後的操作強制查詢被解析。如果你想解決你的查詢,請立即用ToList()
執行。
此外,你實際上沒有對你的過濾列表做任何事情。通過將已過濾列表重新分配給原始列表對象,它將使用過濾器更新集合,刪除與謂詞不匹配的對象。
var list = db.Respaldoes.Where(x => x.type == "Backup");
if (condicion1)
list = list.Where(x => x.entity == "GIELCJLT03").ToList();
if (condicion2)
list = list.Where(x => x.activity_type == "0").ToList();
您應該提供更多信息。你想做什麼(英文,而不是代碼)?當你運行這段代碼時會發生什麼?你有錯誤嗎? – Theresa