簡體   English   中英

Linq to實體搜索算法

[英]Linq to Entities Search Algorithm

我正在實現一個搜索,它將使用六個可能的(但不是必需的)用戶輸入,然后嘗試將它們與某些實體匹配。

我認為我遇到的問題是EF和SQL Server將null視為兩個非常不同的事物。

想法:選擇一個實體,其中columnA =(如果columnA為null,則columnA(或null),否則為searchTerm)。 搜索詞是整數和字符串的混合。

一些代碼:

entities= (from c in context.Entities
           where c.ColumnA == (searchTermA ?? v.ColumnA)
           where c.ColumnB == (searchTermB ?? v.ColumnB)
           select new
           {
               v.Property,
           }).ToList();

如果所有列都不包含空值,則返回實體。 但是,如果列為空,則不會得到預期的結果。

我該如何解決?

理查德

讓函數接受Predicate<T>並在UI端進行過濾器的構造。

請參閱: http//msdn.microsoft.com/en-us/library/bfcke1bz.aspx

這就是我用來處理空值的東西。 這是我可以獲得正確結果的唯一方法。

((searchTermA.HasValue) ? (c.ColumnA == searchTermA) : true)

一種簡單的方法是:

var query = from c in context.Entities;

if  (searchTermA != null) {
    query = query.Where(c => c.ColumnA == searchTermA);
}

// Rest of your conditions defined in the same way.

var entities = query.Select(c => new { c.Property }).ToList();

暫無
暫無

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

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