var oneGroupChapterList = chapterList.Where(x => x.ProviderId == oneGroup.Key.ProviderId && x.BookId == oneGroup.Key.BookId).ToList<BookChapterInfo>();
                List<BookChapterInfo> allChapter = oneGroupChapterList.OrderBy(c => new { c.DisplayOrder, c.ChapterId }).ToList<BookChapterInfo>();异常信息:At least one object must implement IComparable.,也就是在OrderBy的时候出的异常,谁知道为什么在线等。。

解决方案 »

  1.   

    var oneGroupChapterList = chapterList.Where(x => x.ProviderId == oneGroup.Key.ProviderId && x.BookId == oneGroup.Key.BookId);
      List<BookChapterInfo> allChapter = oneGroupChapterList.OrderBy(c => new { c.DisplayOrder, c.ChapterId }).ToList<BookChapterInfo>();去掉第一句的.ToList<BookChapterInfo>();
    它破坏了 linq 的延迟查询 ,影响了效率
      

  2.   

    List<BookChapterInfo> allChapter = oneGroupChapterList.OrderBy(c => c.DisplayOrder * 1000000L + c.ChapterId ).ToList<BookChapterInfo>();
      

  3.   

    .NET 不知道 new { c.DisplayOrder, c.ChapterId } 要如何排序
    如果要双关键字排序可以用 OrderBy( c=>c.DisplayerColor ).ThenBy( c=>c.ChaptherId )
      

  4.   

    OrderBy(c => new { c.DisplayOrder, c.ChapterId })orderby 只允许使用值类型,或已实现了IComparable接口的对象
      

  5.   

    yizhili正解,其他童鞋说的可能与我的情况不大对口,结贴给分,谢谢大家!