我觉得这很简单,我只是错过了......
需要在这样的模型中对FirstName和LastName列进行快速而脏的文本搜索:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
示例数据:
FirstName LastName
-------------------------------
John Appleseed
John Anderson
Chris Cringle
George Washington
Backend是SQL Server,使用LINQ to Entities和Entity Framework 6,我需要对全名进行查找,但是这样的东西不起作用:
var results = from p in db.Persons
where (p.FirstName + ' ' + p.LastName).Contains(keyword)
select p;
LINQ不喜欢这样。这是一种自动完成方法;我希望它能够找到“john a”的结果,如果有人输入 - 它将是样本数据中的前两行。
我该怎么做?
答案 0 :(得分:4)
EF只能连接字符串;它无法连接字符。如果LINQ to Objects char
将被转换为字符串而没有任何问题,但EF只是不够健壮,无法做到这一点。虽然修复很简单;为空格使用文字字符串,而不是文字字符:
var results = from p in db.Persons
where (p.FirstName + " " + p.LastName).Contains(keyword)
select p;