Entity Framework - 使用 Linq 调用字段名称

Entity Framework - Using Linq to Invoke Field Name

我正在使用 net 4.5、C# 和 Entity Framework。我希望能够在运行时为 linq 查询调用 Field。

using var( context = new SomeDataEntities())
{
    var abc = from b in context.someTable
              where b.SomeField == 1
              select b.AnotherField;
}

但是我想根据输入字符串参数调用 b.SomeField。 我当前的代码是

using var( context = new SomeDataEntities())
{
    var abc = from b in context.someTable
              where b.GetType().GetProperty("SomeField").GetValue(b, null).ToString() == "test"
              select b.AnotherField;
}

如果要动态创建 where 子句,最好的方法是方法链接而不是 linq 格式。例如:

using (var context = new SomeDataEntities())
{
     var query = context.Set<SomeTable>();
     if (field1.HasValue)
     {
          query = query.Where(e => e.Field1 == field1.Value);
     }

     if (field2.HasValue)
     {
          query = query.Where(e => e.Field2 == field2.Value);
     }    

     var abc = query.Select(b => b.AnotherField);
}

如果您有很多字段或未知数字,SQL 生成可能是您的最佳策略,并且可以使用 DbContext.Database.SqlQuery() 方法访问。