。Net Core 3.1 Linq to Entities-如何在where子句中连接字符串

问题描述 投票:0回答:1

我有一个带有[FirstName]和[LastName]列的用户表。我正在尝试构建一个搜索功能,以返回满足以下条件之一的用户:

  • 名字== myPattern,或
  • LastName == myPattern,或
  • 名字姓氏== myPattern

例如,如果我的数据库中有以下用户:

  • 杰克一号
  • 杰克二
  • 杰克三

我希望函数在输入为Jack时返回所有这些,但仅在输入为Jack One时返回Jack One。

我目前有以下代码:

var users = context.User.Where(x => x.FirstName == pattern 
            || x.LastName == pattern
            || x.FirstName + " " + x.LastName == pattern)

但是这不起作用,因为它已被翻译成MySQL中的以下查询

...WHERE (`p`.`firstName` = 'Jack One') OR (`p`.`lastName` = 'Jack One')) OR (((`p`.`firstName` + ' ') + `p`.`lastName`) = 'Jack One')

这不起作用,因为我想如果要在MySQL中连接多个字符串,我们需要使用CONCAT(firstName,'',lastName)。

我尝试使用以下.NET函数,但无法将它们转换为sql(LINQ表达式...无法转换。要么以可以转换的形式重写查询,要么通过插入一个显式切换到客户端评估调用AsEnumerable(),AsAsyncEnumerable(),ToList()或ToListAsync())

  • string.Join('',firstName,lastName)
  • string.Concat(firstName,“”,lastName)
  • 如何在.NET CORE 3.1中实现此目标[[无

将所有数据拉入内存并在客户端中进行评估?谢谢

我有一个带有[FirstName]和[LastName]列的用户表。我正在尝试构建一个搜索函数,该函数将返回满足以下条件之一的用户:FirstName == myPattern或LastName == ...

mysql entity-framework .net-core linq-to-entities
1个回答
0
投票
这似乎是Linq用您无法预测的方式翻译查询的情况。
© www.soinside.com 2019 - 2024. All rights reserved.