LINQ 查询连接表的多个 orderby

我有以下 LinQ 查询


   var CGTABLE = (from cg in DbContext.CGTABLE

                              join tcg in DbContext.TCGTABLE on new { cg.CGroupId } equals new { tcg.CGroupId }                                                                    

                              where tcg.TId == TId

                              select new  {

                                  CGroupId = cg.CGroupId,

                                  CGroupCode = cg.CGroupCode,                                      

                                  Description = cg.Description,                                      

                                  C = cg.C,

                                  DisplayOrder = cg.DisplayOrder

                              }).ToList();


        CGTABLE = CGTABLE.OrderBy(g => g.DisplayOrder).ThenBy(g => g.C.OrderBy(c => c.CCode)).ToList();

运行良好,但它没有通过使用 ThenBy 进行第二次排序ThenBy(g => g.C.OrderBy(c => c.CCode)我错过了什么?


Sample data for better understanding.

Data in Tables

2

  1

  2

  4

  3

1

  4

  5

  2

  1

3

  3

  1


Should output after both outer and inner list ordered by

1

  1

  2

  3

  4

2

  1

  2

  4

  5

3

  1

  3


But Currently it is showing

1

  4

  5

  2

  1

2

  1

  2

  4

  3

3

  3

  1


qq_笑_17
浏览 197回答 1
1回答

阿波罗的战车

您不想订购主列表,我想您正在寻找一种在外部列表中订购内部列表的方法。所以下面的代码会为你做:var CGTABLE = (    from cg in DbContext.CGTABLE    join tcg in DbContext.TCGTABLE on new { cg.CGroupId } equals new { tcg.CGroupId }                                                                        where tcg.TId == TId    select new  {        CGroupId = cg.CGroupId,        CGroupCode = cg.CGroupCode,                                              Description = cg.Description,                                              C = cg.C.OrderBy(x => x.CCode),        DisplayOrder = cg.DisplayOrder   }).ToList();   CGTABLE = CGTABLE.OrderBy(g => g.DisplayOrder).ToList();
打开App,查看更多内容
随时随地看视频慕课网APP