gpt4 book ai didi

.net - LINQ to SQL 中的字符串连接

转载 作者:行者123 更新时间:2023-12-04 18:50:45 24 4
gpt4 key购买 nike

有没有办法创建一个 Where lambda 连接两个字符串字段,这样它就可以在 SQL 中正确执行?假设我有一个人,有两个字段,FirstNameLastName .我希望能够按他们的全名进行过滤,在页面上显示为 FirstName + LastName .

我不能使用像 FullName 这样的组合属性在 linq lambda 中,因为 SQL 不知道那是什么,并引发错误。我可以先使用 .AsEnumerable() 运行查询之前Where但这效率较低(我认为?)

我试过 .Where(p => (p.FirstName + p.LastName).Contains(filterText)) ,这运行没有错误,但它实际上一次只能过滤一个。就像生成的 sql 说 WHERE FirstName LIKE %text% OR LastName LIKE %text% ,而不是搜索串联。这意味着我的过滤器文本不能跨越名字和姓氏。如果我搜索 "hn Do""John Doe" ,我没有结果。

那么在 LINQ 中是否有正确的方法来做到这一点,还是我必须满足于替代解决方案?

最佳答案

尝试:

.Where(p => (p.FirstName + " " + p.LastName).Contains(filterText))
否则,您正在检查“hn Do”与“JohnDoe”,这当然不会匹配。
聚苯乙烯
这不是 LINQ to SQL 中的错误。您的查询非常清楚地要求您没有寻找的预期行为。
缴费灵
使用 LINQPad 很容易查看您的 LINQ 查询生成的 SQL。对于您的原始查询,它会生成如下内容:
DECLARE @p0 NVarChar(1000) = '%hn Do%'

SELECT [t0].[PersonId], ...
FROM [Person] AS [t0]
WHERE ([t0].[FirstName] + [t0].[LastName]) LIKE @p0

关于.net - LINQ to SQL 中的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6628271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com