我有一个DataGridView,它包含从数据库上的存储过程返回的数据。每个返回值的列都不相同,因此不要使用强类型名称。我目前正在努力订购这些,因为数字列是按字符串排序的,例如。 1→10→11→15→2→25→3,而不是按价值。我已确认列的ValueType设置正确。我曾尝试这样的:OrderBy命名索引
var sortedRows = from row in _rowArray
orderby columnIndex
select row;
_rowArray = sortedRows.ToArray();
其中_rowArray是数据行的阵列,和是在DataGridView的DataSource,和columnIndex是哪一列在_rowArray用户想要通过订购一个整数变量指定。在调试时,我可以看到sortedRows按照相同的顺序保存了与_rowArray相同的序列,紧跟在LINQ语句之后。我也曾尝试:
_rowArray = _rowArray.OrderBy(r => r[columnIndex]).ToArray();
,并试图建立一个数据视图(视图),这样做:
view.Sort = m_data.Tables[0].Columns[columnIndex].ColumnName + " ASC";
...但是这并没有奏效。任何人提供任何见解?
呈现其自身的问题。首先,它们可以是任何价值类型,而不仅仅是整数。其次,他们可能是空的。另外,我需要在解析为Double,int等之前将r [columnIndex]强制转换为字符串。 – MrShoes
好吧,如果您不知道值类型,那么您不能简单地期望它被按整数排序: )。另一种方法是使用比较器对旧的方式进行排序。 –
我可以使用var dataType = dataGridView1.Columns [columnIndex] .ValueType; – MrShoes