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() 方法访问。
我正在使用 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() 方法访问。