我有一个包含列的DataSet
,将其称为包含整数的Type
。我正在使用 LINQ 来操作 DataSet
,并且我想按 Type
进行排序。 Type
列现在仅包含 3 个值(1、2、3)。我想排序,以便 Type
2 在列表中排在第一位,然后是 1 和 3。
对此有简单的解决方案还是我必须自定义 OrderBy?
最佳答案
几个解决方案:
table.AsEnumerable()
.OrderBy(r => r.Field<int>("Type")==2 ? 0 : 1)
.ThenBy(r => r.Field<int>("Type"));
或者可能更好
table.AsEnumerable().
OrderBy(r => r.Field<int>("Type")==2
? 0
: r => r.Field<int>("Type"))
或者优雅的 Tim Schmelter 的解决方案
table.AsEnumerable()
.OrderByDescending(r => r.Field<int>("Type")==2)
.ThenBy(r => r.Field<int>("Type"))
优势或 Tim Schmelter 的解决方案:您不依赖于“伪值”。
在前两个解决方案中,我们断言 0 是((字段的最小可能值)-1)。
这是真的吗,会不会改变,我们不知道。
关于c# - LINQ OrderBy 有一个异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12604748/