如何使用LINQ对列表进行排序?

时间:2010-04-24 12:26:16

标签: c# linq linq-to-entities

我有一个LINQ查询,用于填充设计者列表。

由于我使用的是以下过滤器,因此我的排序功能无法正常运行。

我的问题是,鉴于以下代码,我如何在事后对列表进行最佳排序或在查询时进行排序?

我尝试使用以下脚本对事件进行排序,但我收到编译错误:

 List<TBLDESIGNER> designers = new List<TBLDESIGNER>();
 designers = 'calls my procedure below and comes back with an unsorted list of designers'
 designers.Sort((x, y) => string.Compare(x.FIRST_NAME, y.LAST_NAME));

我的查询如下:

List<TBLDESIGNER> designer = null;

using (SOAE strikeOffContext = new SOAE())
{
   //Invoke the query
   designer = AdminDelegates.selectDesignerDesigns.Invoke(strikeOffContext).ByActive(active).ByAdmin(admin).ToList();
}

代表:

public static Func<SOAE, IQueryable<TBLDESIGNER>> selectDesignerDesigns =
        CompiledQuery.Compile<SOAE, IQueryable<TBLDESIGNER>>(
        (designer) => from c in designer.TBLDESIGNER.Include("TBLDESIGN")
                      orderby c.FIRST_NAME ascending
                      select c);

过滤ByActive:

public static IQueryable<TBLDESIGNER> ByActive(this IQueryable<TBLDESIGNER> qry, bool active)
    {
        //Return the filtered IQueryable object
        return from c in qry
               where c.ACTIVE == active
               select c;

    }

过滤ByAdmin:

public static IQueryable<TBLDESIGNER> ByAdmin(this IQueryable<TBLDESIGNER> qry, bool admin)
{
    //Return the filtered IQueryable object
    return from c in qry
           where c.SITE_ADMIN == admin
           select c;

}

提前致谢, 比利

1 个答案:

答案 0 :(得分:3)

你的帖子里有很多内容,但我选择回答问题:

  

Linq - 如何对列表进行排序

使用声明性OrderBy和ThenBy方法。

designers = designers
  .OrderBy(td => td.FirstName)
  .ThenBy(td => td.LastName)
  .ToList();