私はEntity Frameworkを使用しており、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;
}