LINQ OrderBy有一个例外

Pet*_*ete 1 .net c# linq

我有一个DataSet包含列的列,调用它Type包含int.我正在使用LINQ来操纵它DataSet,我想要排序Type.该Type列现在仅包含3个值(1,2,3).我想排序,以便Type2列表中的第一个,然后是1和3.

有没有一个简单的解决方案,或者我将不得不自定义OrderBy?

Rap*_*aus 6

几个解决方案:

table.AsEnumerable()
.OrderBy(r => r.Field<int>("Type")==2 ? 0 : 1)
.ThenBy(r => r.Field<int>("Type"));
Run Code Online (Sandbox Code Playgroud)

或者可能更好

table.AsEnumerable().
OrderBy(r => r.Field<int>("Type")==2 
   ? 0 
   : r => r.Field<int>("Type"))
Run Code Online (Sandbox Code Playgroud)

或者也是优雅的Tim Schmelter的解决方案

table.AsEnumerable()
.OrderByDescending(r => r.Field<int>("Type")==2)
.ThenBy(r => r.Field<int>("Type"))
Run Code Online (Sandbox Code Playgroud)

优势或Tim Schmelter的解决方案:您不依赖于"伪值".

在第一个解决方案中,我们断言0是((字段的最小可能值)-1).

这是真的吗,它可以改变,我们不知道.