C# 按非常特定的非字母顺序对数据集行进行排序
因此,我有一个简单的数据集,它的tableC# 按非常特定的非字母顺序对数据集行进行排序,c#,vb.net,linq,dataset,C#,Vb.net,Linq,Dataset,因此,我有一个简单的数据集,它的tableBatchSummary如下所示: 我想按非常具体的顺序对表中的行进行排序。该表始终有5行,描述值始终如下所示(示例): 安娜 坦率的 账单 马可 大卫 我希望数据集按以下非常具体的顺序进行排序: 马可 账单 大卫 安娜 坦率的 我尝试像这样使用DataTable的DefaultView属性来实现 dataSet.BatchSummary.DefaultView.Item(0).DataView.Sort = "Marco, Bill, Dav
BatchSummary
如下所示:
我想按非常具体的顺序对表中的行进行排序。该表始终有5行,描述值始终如下所示(示例):
- 安娜
- 坦率的
- 账单
- 马可
- 大卫
- 马可
- 账单
- 大卫
- 安娜
- 坦率的
dataSet.BatchSummary.DefaultView.Item(0).DataView.Sort = "Marco, Bill, David, Anna, Frank"
但是我得到了一个系统。IndexOutOfRangeException
如何对此进行排序?不支持此操作,它需要一列
我会使用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();
var descriptionOrder=新列表{“马可”、“比尔”、“大卫”、“安娜”、“弗兰克”};
var orderedBatchSummary=dataSet.BatchSummary.AsEnumerable()
.OrderBy(batch=>descriptionOrder.IndexOf(batch.Description))
.ToArray();
不支持此操作,它需要一列
我会使用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();
var descriptionOrder=新列表{“马可”、“比尔”、“大卫”、“安娜”、“弗兰克”};
var orderedBatchSummary=dataSet.BatchSummary.AsEnumerable()
.OrderBy(batch=>descriptionOrder.IndexOf(batch.Description))
.ToArray();
DataView.Sort()
,不是一组值。我通过向数据库表中添加一个名为DisplayOrder的字段来实现这一点。我据此编号。然后我在Select语句中添加了ORDERBY子句。。。按显示顺序排序。DataView.Sort()
,不是一组值。我通过向数据库表中添加一个名为DisplayOrder的字段来完成此操作。我据此编号。然后我在Select语句中添加了ORDERBY子句。。。按显示顺序排序。如果datatable是数据绑定的呢?这个代码甚至可以工作吗?@zackraiyan:什么是数据绑定?数据集
/数据表
是一个内存中的集合,例如通过DataAdapter填充。如果要按顺序填充,则必须使用纯sql(如果源是数据库)。但是OP没有显示任何关于数据源的信息。他只是想订购一个现有的数据集。如果datatable是数据绑定的呢?这个代码甚至可以工作吗?@zackraiyan:什么是数据绑定?数据集
/数据表
是一个内存中的集合,例如通过DataAdapter填充。如果要按顺序填充,则必须使用纯sql(如果源是数据库)。但是OP没有显示任何关于数据源的信息。他只是想订购一个现有的数据集。