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

时间:2015-07-17 15:21:05

标签: c# linq entity-framework

我有以下课程:

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”。仅支持初始值设定项,实体成员和实体导航属性。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

EF支持String.Concact方法。