2

クエリで複数の order by を使用したいのですが、LINQ を使用しています。しかし、なぜこれらがうまくいかないのかわかりません。どこかで間違っていると確信しています。以下は私の状況です。LINQ を使用して作成されたプロジェクトを取得しました。列の順序を設定するタスクはほとんどありません。実際に私の仕事は何ですか 列が作成された日付があり、現在その順序が付けられています。ここで、Createddate と並べ替え用の sortOrder 列を使用したいと思います。以下は、そのために使用されるコードです:ページ読み込みメソッドのコード

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 で並べ替えたいと思います。

私を助けてください..

4

3 に答える 3

8

トレイルに ThenBy() をもう1つ追加できます

LstTopics.OrderByDescending(q => q.Name).ThenBy(q => q.SortOrder).ThenBy(m=>m.date)
于 2012-07-19T13:04:55.717 に答える
3

Dynamic Linqを使用したくない場合は、以下のMarcGravellの回答を参照してください。

stackoverflow:Dynamic Linq OrderBy

于 2012-07-19T13:47:08.020 に答える
1

修正後、Dynamic Linq でこれを達成できます

LstTopics = LstTopics.OrderBy(SortColumn + " " +  SortType);)
于 2012-07-19T13:05:44.200 に答える