欢迎使用C#或VB.NET。
我正在编写一个查询来选择所有包含参数任何部分的记录。
我有一个名为Employees的表。有些人的名字是这样的:John David Clark
如果参数是
只要参数匹配,我就能得到结果。
如果我使用Function Contains(q.FirstName&“& q.LastName).Contains(employeeName),如果employeeName是”John Clark“,我将不会得到任何结果 功能包含仅从左到右查找下一个单词。它一次不匹配一个单词。
这就是我在Linq to SQL中使用它的原因:
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?
答案 0 :(得分:0)
这将找到名字和姓氏与搜索字符串匹配的员工:
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();