簡體   English   中英

如何使用多個可選參數編​​寫Linq To Entities

[英]How to write Linq To Entities with multiple optional parameters

我有一個名為Items(Name,Description)的表

用戶可以根據名稱,描述或兩者來搜索項目。 (實際表有大約15個可以搜索的字段,但在此示例中,僅將其保留為兩個)。

這將搜索名稱和描述。 但是我需要它成為一個,另一個或兩者。

var source = this.DbContext.Items;

IQueryable<Item> items = source.Where(a => a.Name.Contains(item.Name));

items = items.Where(a => a.Description.Contains(item.Description));

return items.ToList();

這是我想出的最好的結果,但是第二行看起來很時髦。

internal List<Item> Search(Item item)
{
    var source = this.DbContext.Items;
    IQueryable<Item> items = source.Where(a=> a == a);

    if(!string.IsNullOrWhiteSpace(item.Name)) items = items.Where(a => a.Name.Contains(item.Name));

    if(!string.IsNullOrWhiteSpace(item.Description)) items = items.Where(a => a.Description.Contains(item.Description));

    return items.ToList();          
}       

如果要刪除此代碼段的第二行:

var source = this.DbContext.Items;
IQueryable<Item> items = source.Where(a=> a == a);

只需將其替換為:

// your Linq To Entities query is already an IQueryable<T>
var items = from item in this.DbContext.Items
            select item;

或更簡單地刪除var關鍵字:

// There is an implicit conversion between DbSet<T> and IQueryable<T> 
// but you gain from it only if you remove the var keyword and not use the type inference
IQueryable<Item> items = this.DbContext.Items;

暫無
暫無

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

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