c# - 给定容差内的清洁列表<double[]>

标签 c# list

我有一个列表,其中每个 double[] 的长度为 3。我想通过仅保留那些具有给定容差(向上舍入)内的唯一元素的 double[] 来清理此列表。例如,如下所示的列表:

1059.17 0 446.542225842081
1059.17 0 446.542564789741
1059.17 0 446.541759880305
959.167 0 579.827860527898
959.167 0 579.827847296075

对于给定的容差,应该变成这样=二:

1059.17 0 446.54,
959.17 0 579.83,

有没有一种聪明的方法可以巧妙地做到这一点?

最佳答案

这应该有效。它使用匿名类型的内置相等比较。

List<double[]> data = ...
int tolerance = 2;
var roundedData = data
    .Select(x => new {
        v1 = Math.Round(x[0], tolerance),
        v2 = Math.Round(x[1], tolerance),
        v3 = Math.Round(x[2], tolerance)
    })
    .Distinct()
    .Select(x => new [] { x.v1, x.v2, x.v3 })
    .ToList();

关于c# - 给定容差内的清洁列表<double[]>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39828857/

相关文章:

c# - EF Code First Fluent Mapping : 0-1 to Many: HasOptional(),同表

c# - 正则表达式 - 20 个字符长的数字,只有空格 如何

c# - Windows 7 上的端口转发

c# - 从列表中的每个元组中获取某些项目

c# - 将项目添加到 KeyValuePairs 的深层列表

c# - 所查看的 MSMQ 消息的 message.ID 不知何故丢失

c# - WPF 对网格中的单个行列使用 GridSplitter

c++ - 为什么 std::list 没有 operator[]?

python - 如何有条件地创建列表?

python - 比较两个列表并获得数字差异