当输入是c#中的实体的全名时,如何从sql数据库中搜索FirstName + Lastname?

时间:2013-10-22 10:02:54

标签: c# linq entity-framework where

我有一个包含FirstName和Last Name列的数据库表,我必须在输入为全名的位置进行搜索。我正在使用实体框架在c#中工作。我正在使用以下代码:

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:-2)

您可以在业务对象中创建一个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)