2010-12-02 85 views
3

我有一個包含許多bool類型屬性的類。根據屬性值創建動態Linq查詢

public class FilterModel 
{ 
    public bool Hotel { get; set; } 
    public bool Apartment { get; set; } 
    public bool Guesthouse { get; set; } 

} 

我正在構建一個基於這些屬性是否爲true或false的動態LINQ查詢。 例如,如果我有這個類的一個實例,並且Hotel設置爲true。 我要生成一個LINQ查詢類似

var q = from accom in db.Accommodation 
        where accom.Hotel == true 
        select accom; 

在此先感謝

回答

3

您正在尋找這樣的事情?

IQueryable<Accommodation> query = db.Accommodation; 

if (filterModel.Hotel)  query = query.Where(a => a.Hotel); 
if (filterModel.Apartment) query = query.Where(a => a.Apartment); 
if (filterModel.Guesthouse) query = query.Where(a => a.Guesthouse); 

return query; 
2

你想是這樣的:

var filterModel = GetFilterModelFromSomewhere(); 
var q = db.Accomodation; 

if (filterModel.Hotel) 
    q = q.Where(accom => accom.Hotel); 

if (filterModel.Apartment) 
    q = q.Where(accom => accom.Apartment); 

if (filterModel.Guesthouse) 
    q = q.Where(accom => accom.Guesthouse); 

由於不執行查詢,直到您枚舉它(通過ToList()或同等功能),你可以在代碼基礎上零碎構建它動態條件。