简单问题如何拥有这样的东西
customers.where(c=>c.Name **like** "john");
Run Code Online (Sandbox Code Playgroud)
我知道这不可能,但我想知道我怎么能有类似的东西.
提前致谢.
Tom*_*ort 71
customers.Where(c => c.Name.Contains("john"));
Run Code Online (Sandbox Code Playgroud)
Joh*_*lph 30
如果要将LINQ定位到SQL,请使用SqlMethods.Like:
customers.Where(c => SqlMethods.Like(c.Name, "%john%"));
Run Code Online (Sandbox Code Playgroud)
说明:
编译器将从上面的语句生成表达式树.由于LIKE是一个SQL特定构建体和不常见的所有LINQ查询提供者,SqlMethods类及其成员被用作"暗示"为表达式编译器(编译表达式树到SQL)发出LIKE声明.
想到的第一个想法是Regex.IsMatch.
这最接近于提供您获得的功能LIKE; 例如,你可以这样做:
var matches = people.Where(p => Regex.IsMatch(p.Name, "A.*[mn]"));
foreach (Person match in matches)
{
Console.WriteLine(match.Name);
}
Run Code Online (Sandbox Code Playgroud)
得到这样的输出:
Adam Aaron Aidan
string.Contains如果您的意图只是寻找其中的特定子字符串,那么与其他人建议的一样几乎肯定更可取Name.
小智 5
using System.Data.Linq.SqlClient;
...
customers.where(c=>SqlMethods.Like(c.Name, "john"));
Run Code Online (Sandbox Code Playgroud)