比方说,我有一个具有string[]
属性的元素集合。
我正在按它分组,但是我发现不需要分组。
例如(通过float
获利double
的{{1}}):
Random
这将导致如下情况:
分组0,00075609376689237252
分组0,0010980092925475954
分组0,0020200186418462629
分组0,0062832017458431429
...
问题是(是否有价值):我如何通过允许像... +-0.05这样的“边界”对它们进行分组?
答案 0 :(得分:2)
+-0.05的界限不清楚:
对于像{这样的集合:{0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1}
下一个每个值都是0.01,但都在0.05的[+ -0.05]范围内。
但是0.01和0.06彼此相距太远。
但是rounding到小数点后第二位就足够了。
examples.GroupBy(x => Math.Round( x.Position,2))
bleep-bloop评论:
如果您要按0.05组进行分组,可以执行
x => Math.Round(x.Position / 0.05)
MCVE:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public void Main()
{
var examples = new List<Example>();
var rnd = new Random();
for (int i = 0; i < 100; i++)
{
var newPosition = rnd.NextDouble();
examples.Add(new Example { Position = newPosition });
}
examples.GroupBy(x => Math.Round( x.Position,2)).Dump();
examples.GroupBy(x => x => Math.Round(x.Position / 0.05)).Dump();
}
public class Example
{
public double Position { get; set; }
}
}