2017-02-15 98 views
0

我正在尋找一種方式來此查詢轉換:轉換SQL到LINQ表達

Select * 
    From Tasks 
    Where Addresses_Street1+' '+Addresses_Street2+' '+Addresses_City +' '+Addresses_ZipCode Like '%'+replace(ltrim(rtrim('Leon Deladriere 15')),' ','%') 

到LINQ C#表達。

我知道Contains()和Trim()可以用於該方法,但如何處理由'%'替換'''?

該表達式用於向用戶提供一個具有地址的單個輸入,並查看多個列以查找匹配的一個。

我用Linqpad但我不Linq中

回答

1

你可以試試。

(from r in Tasks where SqlMethods.Like(
    r.Addresses_Street1 + " " + 
    r.Addresses_Street2 + " " + 
    r.Addresses_City + " " + 
    r.Addresses_ZipCode, 
    "%Leon Deladriere 15".Trim().Replace(" " , "%")) 
    select r) 

注意,LinqSql是足夠聰明,知道它可以做微調和局部更換,而不是要求SQL來做到這一點。

但是如果你使用一個字段,而不是一個常數,例如

(from r in Task where SqlMethods.Like(... , 
    r.Addresses_Street1 + " " + 
    r.Addresses_Street2 + " " + 
    r.Addresses_City + " " + 
    r.Addresses_ZipCode,  
    r.AnotherField.Trim().Replace(" " , "%")) 
    select r) 

,那麼這將讓SQL做裝飾並更換。

0

看到相當於試試這個:

var user = "Leon Deladriere 15".Trim(); 
Tasks.Where(t => (t.Addresses_Street1 + t.Addresses_Street2 + t.Addresses_City + t.Addresses_ZipCode).Contains(user));