簡體   English   中英

基於屬性值創建動態Linq查詢

[英]Creating dynamic Linq query based on property values

我有一個包含許多bool類型屬性的類。

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;

提前致謝

你在找這樣的東西嗎?

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;

你想要這樣的東西:

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()或等效函數),您可以根據動態條件在​​代碼中逐個構建它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM