当输入是带有 c# 中实体的全名时,如何从 sql 数据库中搜索名字 + 姓氏

本文关键字:数据库 sql 搜索 姓氏 输入 实体 全名 | 更新日期: 2023-09-27 18:36:19

>我有一个包含"名字"和"姓氏"列的数据库表,我必须进行搜索,其中输入的是全名。我正在使用带有实体框架的 c#。我正在使用以下代码:

  var user = context.User.Where(i => i.FirstName + " " + i.LastName == fullName)

有没有更好或更优雅的方法?

我想过拆分为全名,但有名字和姓氏由多个单词组成,这似乎使搜索非常尴尬。

当输入是带有 c# 中实体的全名时,如何从 sql 数据库中搜索名字 + 姓氏

你需要为它创建一个表达式来使其工作,如果你不想污染对象本身,你可以将这个表达式封装在类本身或其他类中。

您可以在 http://blog.cincura.net/230786-using-custom-properties-as-parameters-in-queries-in-ef/找到示例。

我有一个类似的解决方案,可能会返回更多结果:

var user = context.User.Where(i => i.FirstName + " " + i.LastName).Contains(fullName);

这类似于SQL中的"like"。

您可以在业务对象中创建 FullName 属性,该属性仅返回连接名字和姓氏的全名。然后,您可以在必要时在 LINQ/Lambda 中使用此属性

public class MyUser
{
   public int UserId { get; set; }
   public string FirstName {get; set;}
   public string LastName {get; set;}
   public string FullName
   {
      get
        {
           string fullName=firstName;
           if(!string.isNullOrEmpty(LastName))
           {
               fullName= " "+ LastName;
           }
           return fullName;
        }
   } 
}
context.User.Where(i => i.FullName== fullName)