我有一个包含 FirstName 和 Last Name 列的数据库表,我必须在输入是全名的地方进行搜索。我正在使用实体框架在 c# 中工作。我正在使用以下代码:
var user = context.User.Where(i => i.FirstName + " " + i.LastName == fullName)
有没有更好或更优雅的方式来做到这一点?
我想过拆分为全名,但名字和姓氏由多个单词组成,这似乎使搜索变得非常尴尬。
我有一个包含 FirstName 和 Last Name 列的数据库表,我必须在输入是全名的地方进行搜索。我正在使用实体框架在 c# 中工作。我正在使用以下代码:
var user = context.User.Where(i => i.FirstName + " " + i.LastName == fullName)
有没有更好或更优雅的方式来做到这一点?
我想过拆分为全名,但名字和姓氏由多个单词组成,这似乎使搜索变得非常尴尬。
您需要为其创建一个表达式以使其工作,如果您不想污染对象本身,您可以将其封装在类本身或其他类中。
您可以在http://blog.cincura.net/230786-using-custom-properties-as-parameters-in-queries-in-ef/找到示例。
您可以在业务对象中创建一个 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)