Linq,我该如何灵活排序?

时间:2010-10-22 04:29:16

标签: linq

我是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??

剂量不符合要求。 我可以在这里得到帮助吗?

1 个答案:

答案 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语句中选择对象。