繁体   English   中英

对最接近某个值的DataRow集合进行排序

[英]Sorting a DataRow Collection with a value closest to certain value

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

您可以尝试以下方法:

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

或Convert.ToDouble,我不知道您使用的类型。

注意:如果该列允许null ,那么在转换之前应首先检查它是否为DBNULL

您可以使用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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM