我想在我的查询中使用多个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进行排序。
请帮帮我..
答案 0 :(得分:7)
你可以在路径
中再添加一个ThenBy()LstTopics.OrderByDescending(q => q.Name).ThenBy(q => q.SortOrder).ThenBy(m=>m.date)
答案 1 :(得分:3)
如果您不想使用Dynamic Linq,请参阅下面的Marc Gravell答案
答案 2 :(得分:1)
经过修正后,您可以通过Dynamic Linq实现此目的
LstTopics = LstTopics.OrderBy(SortColumn + " " + SortType);)