【发布时间】:2020-11-17 16:27:49
【问题描述】:
我有一个对象列表。
每个对象都有 3 个属性。
有没有一种好方法可以检查获取属性相同的双重对象。
var upperT = dimensionList.GroupBy(x => x.UpperMetricToleranceValue).Select(x => x.First()).ToList();
var sizeT = dimensionList.GroupBy(x => x.ComputedSize).Select(x => x.First()).ToList();
var lowerT = dimensionList.GroupBy(x => x.LowerMetricToleranceValue).Select(x => x.First()).ToList();
foreach (var dimension in dimensionList)
{
foreach (var upper in upperT)
{
foreach (var lower in sizeT)
{
foreach (var size in lowerT)
{
if (DELETE HERE IF SAME)
{
}
}
}
}
}
所以我认为这不是使用它的好方法。
我不想使用像 moreLinq 这样的第三方库
【问题讨论】:
-
可以尝试
Round分组前的值;即如果5.998 ~ 6.001,您可以输入GroupBy(x => Math.Round(x * 100)).First();请注意,当double包含整数值时,我们没有舍入错误 -
如果数据存储在 RDBMS 中,使用 SQL 删除项目可能比使用四元嵌套循环更有效。
-
这个问题写的很不清楚看起来你只需要按复合键分组。
demensionList.GroupBy(x => new { x.UpperMetricToleranceValue, x.ComputedSize, x.LowerMetricToleranceValue}