我搜索了整个互联网并尝试了很多东西,但我无法从我的表达中获得价值。如果有人可以帮助我,那将是非常酷的...
再见马库斯
public static class LinqExtension
{
public static IQueryable<T> GetFilteredByStatusList<T>(this IQueryable<T> source, Expression<Func<T, int>> expression)
{
// So I can compile the expression.
// In some posts I have found, that I have to call the compiled method, but the method needs the T object.
// I have no idea how to acces the value of T.
Func<T, int> method = expression.Compile();
//EDIT
// Here I need the int value to pass it in a service method like:
// Service.GetStatusById("int value from expression");
//EDIT END
return source;
}
}
-- 编辑我有一个查询,在这个查询中我必须调用一个需要来自当前查询项的动态值的方法。该方法已经存在,并且我在使用 for 循环通过查询进行查询后使其工作,并在此循环中的每个项目上调用此方法。但我认为这不是一个非常快速的解决方案。
所以我在查询中调用这个方法,这就是为什么我尝试使用扩展方法来实现它。
在扩展方法调用之后:
return query = query
.Join(entities.tblTaskgroupGlobal, x => x.lngAssignMain_id, y => y.id, (x, y) => new { x = x, y = y })
.WhereIf(taskFilterModel.StatusFilterList.Count() > 0, xy => taskFilterModel.StatusFilterList.Contains(xy.y.lngConstantStatus_id))
.GetFilteredByStatusList(xy => xy.x.lngAssignMain_id)
.Select(xy => xy.x);
-- 编辑结束