Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在分部类中添加新属性时,LINQ to实体中不支持指定的类型成员_C#_Linq_Entity Framework 6 - Fatal编程技术网

C# 在分部类中添加新属性时,LINQ to实体中不支持指定的类型成员

C# 在分部类中添加新属性时,LINQ to实体中不支持指定的类型成员,c#,linq,entity-framework-6,C#,Linq,Entity Framework 6,我有一个实体框架的EDMX生成的类,它有两个属性 public partial class Contact : EntityBase { public string FirstName { get; set; } public string LastName { get; set; } } 我需要通过连接FirstName和LastName返回FullName的其他属性。所以我为此创建了一个分部类 public partial class Contact { publi

我有一个实体框架的EDMX生成的类,它有两个属性

public partial class Contact : EntityBase
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
我需要通过连接FirstName和LastName返回FullName的其他属性。所以我为此创建了一个分部类

public partial class Contact
{
    public string FullName
    {
        get { return string.Format("{0}{1}", FirstName, !string.IsNullOrEmpty(LastName) ? " " + LastName : String.Empty); }
    }
}
现在,我创建了一个LINQ表达式来搜索匹配Steeve John和FullName的记录

Expression<Func<Contact, bool>> cntExpression = p => 
                p.FullName.ToLower().Trim().Contains("Steeve John");
我得到的错误是:

The specified type member 'FullName' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
请帮我解决这个问题


提前感谢。

Linq to entities不知道您在FullName中使用的string.Format。你可以试试这样的方法:

Expression<Func<Contact, bool>> cntExpression = p => 
(p.FirstName + " " + p.LastName).ToLower().Trim().Contains("Steeve John");

查询表达式中不能使用任何自定义属性;基本上,错误是说没有名字,或者我认为这应该是全名?如果不是,则至少在对数据库运行查询之前,名称从数据库中的字段中的何处来。之后,你可以很好地使用它。查询在那里失败,因为ToList对数据库执行查询,而这正是进行验证的时候


首先查询记录,然后在调用ToList后使用FullName,它将正常工作。

首先,您将FullName.ToLower与Steeve John进行比较,它将永远不会返回任何记录。你在干什么?不客气。如果您使用ToList,请记住,如果您有许多数据集,这可能需要很长时间…我同意Norman的观点,因此在筛选记录之前,我不会使用ToList。
The specified type member 'FullName' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
Expression<Func<Contact, bool>> cntExpression = p => 
(p.FirstName + " " + p.LastName).ToLower().Trim().Contains("Steeve John");
Expression<Func<Contact, bool>> cntExpression = p => 
(p.FirstName == "Steeve" && p.LastName == "John");
s.Leads.ToList().Where [...]