gpt4 book ai didi

c# - 使用 LINQ 基于三列搜索全名

转载 作者:行者123 更新时间:2023-11-30 15:54:56 24 4
gpt4 key购买 nike

我正在尝试在 Visual Studio 中使用 LINQ 进行搜索。在我的数据库中,我有三个字段“Firstname”、“LastNamePrefix”和“Lastname”。我的搜索字符串是 Searchtext。如何创建一个简单的 LINQ 查询来搜索所有字段?

我目前的情况是这样的:

query = query.Where(x => x.FirstName.Contains(input.SearchText) || x.LastNamePrefix.Contains(input.SearchText) || x.LastName.Contains(input.SearchText));

有了这个我真的很接近解决方案但是当我尝试将 Firstname 与 LastNamePrefix 和 Lastname 组合时,我没有得到任何结果。

例如 Jan van Lauw 这个名字:

I search Jan. It works
I search van. It works
I search Lauw. It works
I search Jan van Lauw. No results.

我尝试创建一个列,将三列组合成一个全名,函数如下:

public static string CreateFullname(string firstName, string lastNamePrefix, string lastName)
{
return $"{firstName} {lastNamePrefix} {lastName}".Replace(" ", " ").Trim();
}

如果我尝试像下面的代码一样使用此列,我会收到以下错误:

The specified type member 'FullName' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.

query = query.Where(x => x.FullName.Contains(input.SearchText));

如何在多列中进行搜索?

最佳答案

您不能在查询中使用自定义(未映射)属性,如 FullName,但您可以内联组合您的属性:

query.Where(x => (x.FirstName.Trim() + " " + x.LastNamePrefix.Trim() + " " + x.LastName.Trim()).Trim().Contains(input.SearchText));

关于c# - 使用 LINQ 基于三列搜索全名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49251815/

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