我正在使用实体框架并正在构建一个IQueryable<T>
IQueryable<Message> query = db.Messages;
query = query.OrderByDescending(m => m.Created);
query = query.Where(m => m.Deleted == false);
if (lastTime != null)
query = query.Where(m => m.Created < lastTime);
var func = ExpressionHelper.GetPredicate(stream);
query = query.Where(func).AsQueryable; *** ISSUE HERE?? ***
query = query.Skip(skip)
.Take(count)
.Include(m => m.Tags)
.Include(m => m.Properties);
var results = query.ToList();
问题是标签和属性未填充到最终列表中。
我相信它与Func<>
我正在传递的内容有关,并且还相信在AsQueryable
使用它之后它并不代表IQueryable
或不再连接到数据库。
有没有办法让标签和属性填充?
我不确定是否Func<>
会Expression<Func<>>
有所帮助,如果有,是否有办法将以下内容转换为Expression<Func<>>
更新:
public static Func<Message, bool> GetPredicate(string expression)
{
Func<Message, bool> result = null;
try
{
ParameterExpression parameter = Expression.Parameter(typeof(Classes.Message), "Message");
var lambda = DynamicExpression.ParseLambda(new[] { parameter }, null, expression);
result = lambda.Compile() as Func<Message, bool>;
}
catch (Exception e)
{
Log.Fatal(e);
}
return result;
}