c# - LINQ OrderBy 有一个异常(exception)

标签 c# .net linq

我有一个包含列的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/

相关文章:

c# - 使用 Excel = Microsoft.Office.Interop.Excel 编译错误

c# - Visual Studio 2010 C# 导航开关大小写

performance - LINQ AsNoTracking 运行缓慢

c# - Emgu CV无法播放视频

c# - 使用 Rebus 时是否有一种干净的方法来获取消息(传输)ID?

c# - 我们可以在 ASP.NET 中为 pagemethod 和 webmethod 使用相同的数据表吗?

c# - 如何在 LINQ 查询中添加静态

c# - 使用 Linq 查询服务引用

c# - XElement 添加一个 xmlns

c# - "Unable to determine the serialization information for"MongoDB 复杂类型等于空过滤器的错误