使用最接近特定值的值对DataRow集合进行排序

时间:2013-09-30 14:13:07

标签: c# arrays sorting datatable datarow

我有一个DataRow[]由3列组成我想根据最接近某个给定值的列值对集合进行排序。即Abs(column - given_value)。 有人可以告诉我如何实现这一目标吗?

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

var results = collection.OrderBy( 
     row => Math.Abs(Convert.ToInt32(row["ColumnName"]) - given_value));

或Convert.ToDouble,我不知道你正在使用的类型。

注意:该列是否允许 null ,您应该在转换前先检查DBNULL

答案 1 :(得分:0)

您可以使用Linq和Math.Abs

IEnumerable<DataRow> orderedRows = rows
    .OrderBy(r => Math.Abs(r.Field<int>("column") - given_value));

如果要创建新阵列:rows = orderedRows.ToArray();

r.Field<int>替换为实际类型。如果它只是一个字符串,你需要先转换它:

IEnumerable<DataRow> orderedRows = rows
    .OrderBy(r => Math.Abs(int.Parse(r.Field<string>("column")) - given_value));