【问题标题】:Microsoft SQL lambda: Combining columns for searchingMicrosoft SQL lambda:组合列进行搜索
【发布时间】:2017-03-14 01:20:49
【问题描述】:

我有一张这样的桌子:

ID | FirstName | LastName |  
---------------------------
 1 |   Kathy   |  Gray    | 

然后我有一个搜索框,它将提供一个字符串。该字符串可以是用户的名字、姓氏、both 名字和姓氏,由空格分隔。部分匹配也应该有效。例如“凯丝格拉”。

使用实体框架 lambda 表达式,我如何使用给定的字符串在数据库中搜索上述条件?

这是一个现有的应用程序,这是当前编写的过滤器:

var students = Students.Where(e => e.FirstName.Contains(searchString) ||
                                     e.LastName.Contains(searchString);

明显的问题是“Kathy Gray”本身并不存在于任一列中。通常,我会创建一个带有FullName 字段的新模型并对其进行搜索,但在这种特殊情况下,这样的修改会很困难。

谢谢!

编辑:代码是从原始简化的,但我留下了一个令人困惑的变量名。固定。

【问题讨论】:

  • 您是否尝试过将其分配给一个新变量 var enrollment enrollments.Where(e => e.FirstName.Contains(searchString) || e.LastName.Contains(searchString); 来运行它,注册定义在哪里......?
  • 如果您还想搜索“Gray Kathy”,您应该拆分字符串并单独搜索。

标签: c# linq lambda


【解决方案1】:

你有没有尝试在你的lamba表达式中连接名字和姓氏

enrollments = enrollments.Where(e => (e.FirstName + " " + e.LastName).Contains(searchString));

【讨论】:

  • 生成的 sql 可能看起来像 select * from 注册 where FirstName + ' ' + Last Name like @serachString
  • 不,我没有。这似乎效果很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
相关资源
最近更新 更多