按特定的非字母顺序对DataSet行进行排序

时间:2017-11-23 10:51:04

标签: c# vb.net linq dataset

所以我有一个简单的DataSet,其表BatchSummary如下所示:  enter image description here

我想以非常具体的顺序对此表中的行进行排序。该表总是有5行,Description的值总是如下所示(例子):

  • 安娜
  • 弗兰克
  • 比尔
  • Marco
  • 大卫

我希望按照这个非常具体的顺序对DataSet进行排序:

  • 比尔
  • 大卫
  • 安娜

我尝试使用我的DataTable的DefaultView属性这样做

dataSet.BatchSummary.DefaultView.Item(0).DataView.Sort = "Marco, Bill, David, Anna, Frank"

但我得到System.IndexOutOfRangeException

我该如何排序?

1 个答案:

答案 0 :(得分:2)

DataView.Sort不支持此功能,它需要一个列。

我会使用更强大的Linq-To-DataTable

var descriptionOrder = new List<string>{ "Marco", "Bill", "David", "Anna", "Frank" };

var orderedBatchSummary = dataSet.BatchSummary.AsEnumerable()
    .OrderBy(batch => descriptionOrder.IndexOf(batch.Description))
    .ToArray();