Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将SQL转换为Linq表达式_C#_Linq_Linqpad - Fatal编程技术网

C# 将SQL转换为Linq表达式

C# 将SQL转换为Linq表达式,c#,linq,linqpad,C#,Linq,Linqpad,我正在寻找转换此查询的方法: Select * From Tasks Where Addresses_Street1+' '+Addresses_Street2+' '+Addresses_City +' '+Addresses_ZipCode Like '%'+replace(ltrim(rtrim('Leon Deladriere 15')),' ','%') 到Linq C表达式 我知道Contains和Trim可以用于该方法,但是如何处理用“%”替换“”呢 此表

我正在寻找转换此查询的方法:

 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中看不到等效项尝试以下方法:

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

(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进行修剪和替换