执行LINQ查询而不使用EF中的NotMapped属性

本文关键字:EF 中的 NotMapped 属性 LINQ 查询 执行 | 更新日期: 2023-09-27 18:03:26

我有以下类:

public class Contact
{
    public int ContactID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

和以下数据:

  • 1/John/Doe
  • 2/Mike/Tyson
  • 3/John/Mc Enroe
  • 4/Stef/Doe

现在我需要让用户像这样搜索联系人:

  • John Doe>获取所有名字为John和姓氏为Doe的联系人
  • John>获取名字为John的所有联系人
  • Doe>获取姓氏为Doe的所有联系人

我试图添加一个NotMapped元素到我的类,并执行我对这个(完整)名称的搜索,但LINQ查询不与NotMapped元素工作。

[NotMapped]
public string Name {
    get {
        return FirstName + " " + LastName;
    }
}
var someone = "John Doe";
requests.Where(s => s.Contact.Name.Contains(someone));

在LINQ to Entities中不支持指定的类型成员'Name'。只支持初始化式、实体成员和实体导航属性。

任何想法?

谢谢。

执行LINQ查询而不使用EF中的NotMapped属性

我认为您不需要创建一个未映射的属性来实现您所需要的。你可以试试:

var someone = "John Doe";
var contacts=context.Contacts.Where(c => String.Concat(c.FirstName, " ", p.LastName).Contains(someone));

EF支持String.Concact方法