这是我的类(class):
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FullName { get { return FirstName + " " + LastName; } }
}
这是我的 list :
var persons = new List<Person>();
persons.Add(...);
persons.Add(...);
etc.
如果我尝试通过“计算的”属性 FullName 搜索列表,如下所示:
return persons.Where(p => p.FullName.Contains("blah"))
我收到以下错误:
System.NotSupportedException: The specified type member 'FullName' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
我该如何解决这个问题?
最佳答案
您不能在 IQueriable
谓词中使用计算属性。有两种方法可以实现这一点。
您可以在数据库中创建一个 View 并在那里创建计算的 FullName 列并将该列映射回您的数据实体。
其次,您可以将所有数据检索回客户端并在内存中过滤它们:
persons
.ToList() // Execute this query and get results
.Where(p => p.FullName.Contains("blah");
关于c# - 按计算属性搜索对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651953/