我是linq的新手,现在我需要使用指定的sort参数进行灵活排序。 但是
var query =
from accessdoc in dt1.AsEnumerable()
join content in dt2.AsEnumerable()
on accessdoc.Field<string>("name") equals content.Field<string>("FileName")
into docs
orderby accessdoc.Field<DateTime>("CreateDate") descending //TODO: HOW TO SORT??
剂量不符合要求。 我可以在这里得到帮助吗?
答案 0 :(得分:1)
由于linq是后期绑定,您可以执行查询,然后单独应用排序。如果您可以稍微分解一下sort参数的执行方式,可以这样做:(此代码尚未编译,请耐心等待我)
public enum SortDirection
{
Ascending = 0, //default value
Descending = 1
}
现在如果传入linq表达式和方向,你可以这样做:
public IQueryable<MyObject> GetWithSort(System.Linq.Expressions.Expression<Func<MyObject, TKey>> sortExpression, SortDirection direction)
{
var results = from accessdoc in dt1.AsEnumerable()
join content in dt2.AsEnumerable()
on accessdoc.Field<string>("name") equals content.Field<string>("FileName")
into docs
select...;
if (direction == SortDirection.Descending)
return results.OrderByDescending(sortExpression);
return results.OrderBy(sortExpression)
}
select ...必须替换,但是你要从linq语句中选择对象。