如何在LINQ中使用多个订单?

时间:2012-07-19 12:58:16

标签: asp.net linq sorting

我想在我的查询中使用多个order,我使用LINQ.i是LINQ的新手,我已经尝试了stackoverflow上给出的示例。但我不知道为什么这些不适合我,我相信我错了。以下是我的情况。 我有一个使用LINQ创建的项目。我没有设置列顺序的任务。实际上我的任务是什么,现在有一个列创建日期。现在我想使用Createddate以及sortOrder列进行排序.Below是用于它的代码: 页面加载方法中的代码

ViewState["SortDirection"] = "desc";
ViewState["SortColumn"] = "createddate";
BindAllTopics(ViewState["SortDirection"].ToString(), ViewState["SortColumn"].ToString());

我的 BindAllTopic 方法如下:

 protected void BindAllTopics(string SortType, string SortColumn)
{
    var LstTopics = (from topic in Dbobj.T_topic select topic).ToList();
    if (LstTopics.Count() > 0)
    {
        if (SortType == "ASC")
        {
            LstTopics = LstTopics.OrderBy(q => q.Name).ToList();
        }
        else
        {
            LstTopics = LstTopics.OrderByDescending(q => q.Name).ThenBy(q => q.SortOrder).ToList();
        }
        GrdTopics.DataSource = LstTopics.ToList();
        GrdTopics.PageSize = 25;
        GrdTopics.DataBind();

    }
    else
    {
        GrdTopics.DataSource = null;
        GrdTopics.DataBind();
        lblMsg.DisplayMessage(StatusMessages.InfoMessage, "No Topics Found.");
    }
}

我想首先使用int类型的sortorder对其进行排序,然后按Createddate进行排序。

请帮帮我..

3 个答案:

答案 0 :(得分:7)

你可以在路径

中再添加一个ThenBy()
LstTopics.OrderByDescending(q => q.Name).ThenBy(q => q.SortOrder).ThenBy(m=>m.date)

答案 1 :(得分:3)

如果您不想使用Dynamic Linq,请参阅下面的Marc Gravell答案

stackoverflow:Dynamic Linq OrderBy

答案 2 :(得分:1)

经过修正后,您可以通过Dynamic Linq实现此目的

LstTopics = LstTopics.OrderBy(SortColumn + " " +  SortType);)