属性 当我想构建表达式时没有为类型定义

Property is not defined for type when i want to build expression

我想构建一个表达式来通过 EF Core 2.1 查询我的数据库

我有我的 Data class 代表来自我的 table 的实体:

public class Data
{
    public string Id1 {get;set;}
    public string Id2 {get;set;}
}

然后我想建立一些表达:

var parameter = Expression.Parameter(typeof(Data), "x");
var memberId1 = Expression.Field(parameter, nameof(Data.Id1));
var memberId2 = Expression.Field(parameter, nameof(Data.Id2));

当我想从 Id1 制作 Field 时,我得到了这个例外:

System.ArgumentException: Instance field 'Id1' is not defined for type 'Entities.Data' at System.Linq.Expressions.Expression.Field(Expression expression, String fieldName)

如何从我的 Data class 获取对太字段的访问权限?

我的Id1Id2不是Field而是Property。现在有效了:

var parameter = Expression.Parameter(typeof(Data), "x");
var memberId1 = Expression.Property(parameter, nameof(Data.Id1));
var memberId2 = Expression.Property(parameter, nameof(Data.Id2));