我有以下课程:

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


以及以下数据:


1 /约翰/母鹿
2 /迈克/泰森
3 /约翰/麦恩罗
4 / Stef /母鹿


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


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'。仅支持初始化程序,实体成员和实体导航属性。

任何的想法?

谢谢。

最佳答案

我认为您无需创建未映射的属性即可实现所需的功能。您可以尝试以下方法:

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


EF支持String.Concact方法。

关于c# - 在不使用EF中的NotMapped属性的情况下执行LINQ查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31479209/

10-15 18:14