C# 在数据库中搜索与整个参数或参数的任何部分匹配的名称
欢迎使用C或VB.NET 我正在编写一个查询来选择包含参数任何部分的所有记录 我有一张桌子叫Employees。有些人的名字是这样的:约翰·大卫·克拉克 如果参数为 约翰 约翰·大卫 大卫约翰 姜苦乐 克拉克·约翰 只要参数匹配,我就能得到结果 若我使用的函数包含q.FirstName&&q.LastName.ContainsemployeeName,若employeeName是John Clark,我将不会得到任何结果 函数包含从左到右只查找下一个单词。它一次与一个单词都不匹配 这就是为什么我在Linq to SQL中使用这个:C# 在数据库中搜索与整个参数或参数的任何部分匹配的名称,c#,sql,vb.net,sql-server-2008,linq-to-sql,C#,Sql,Vb.net,Sql Server 2008,Linq To Sql,欢迎使用C或VB.NET 我正在编写一个查询来选择包含参数任何部分的所有记录 我有一张桌子叫Employees。有些人的名字是这样的:约翰·大卫·克拉克 如果参数为 约翰 约翰·大卫 大卫约翰 姜苦乐 克拉克·约翰 只要参数匹配,我就能得到结果 若我使用的函数包含q.FirstName&&q.LastName.ContainsemployeeName,若employeeName是John Clark,我将不会得到任何结果 函数包含从左到右只查找下一个单词。它一次与一个单词都不匹配 这就是为什么我
Dim employeeName As String
query = From q In db.Employees _
Where (q.FirstName & " " & q.LastName).Split(CChar(" ")).Intersect(employeeName.Split(CChar(" "))).Any _
Select q
我得到了以下错误:
除Contains运算符外,查询运算符的LINQ to SQL实现中不能使用局部序列
是否有其他方法可以查询包含参数任何部分的FirstName和LastName?这将查找名和姓都与搜索字符串匹配的员工:
var searchText = "John David Clark";
var tokens = searchText.Split(null);
var result = db.Employees
.Where(arg => tokens.Contains(arg.FirstName) && tokens.Contains(arg.LastName))
.Select(arg => new { arg.LastName, arg.FirstName })
.ToList();
var searchText = "John David Clark";
var tokens = searchText.Split(null);
var result = db.Employees
.Where(arg => tokens.Contains(arg.FirstName) || tokens.Contains(arg.LastName))
.Select(arg => new { arg.LastName, arg.FirstName })
.ToList();
这将查找那些姓氏或名与搜索字符串中的任何姓名匹配的员工:
var searchText = "John David Clark";
var tokens = searchText.Split(null);
var result = db.Employees
.Where(arg => tokens.Contains(arg.FirstName) && tokens.Contains(arg.LastName))
.Select(arg => new { arg.LastName, arg.FirstName })
.ToList();
var searchText = "John David Clark";
var tokens = searchText.Split(null);
var result = db.Employees
.Where(arg => tokens.Contains(arg.FirstName) || tokens.Contains(arg.LastName))
.Select(arg => new { arg.LastName, arg.FirstName })
.ToList();