繁体   English   中英

在EF6模型的多个列中使用String.Contains()

[英]Using String.Contains() across multiple columns in EF6 model

我觉得这很简单,我只是想念它...

需要像这样的模型一起对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

后端是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”的结果-那将是示例数据的前两行。

我该怎么做?

EF只能连接字符串。 它不能连接字符。 如果是LINQ to Objects,则char可以毫无问题地转换为字符串,但是EF不够强大。 该修复程序非常简单。 在空格处使用文字字符串 ,而不是文字字符:

var results = from p in db.Persons
              where (p.FirstName + " " + p.LastName).Contains(keyword)
              select p;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM