【发布时间】:2015-01-17 23:14:52
【问题描述】:
我有一个包含 id 和值的列表,我需要删除 id 重复项。我正在寻找一种在 LINQ 中更可取的有效方式,而不是我的循环和 if 条件。感谢您的帮助和建议。
var list = new List<Tuple<int, double>>();
Current values:
1, 3.6
1, 3.8
2, 5.6
3, 8.1
Wished values:
1, 3.6
2, 5.6
3, 8.1
for (int i = 0; i < list.Count - 1; i++)
{
if (list[i].Item1 == list[i + 1].Item1)
list.RemoveAt(i+ 1);
}
【问题讨论】:
-
当前值和期望值没有区别
-
现在看,我是在发帖后才注意到的。
-
我必须对此发表评论......(可能会成为我对 SO 上这些与 LINQ 相关的问题的不满)。为什么你认为 LINQ 版本比简单的 for 循环实现更高效?就执行效率而言,使用
.GroupBy、.Select和.ToDictionary的公认答案远非高效。 :(那么你在这里寻求什么效率?我不明白。请澄清..我很好奇。 -
@VikasGupta 一些人使用 LINQ 是因为想要更短、更好的可读性和可维护性的代码。我希望这能满足你的好奇心。但是,如果你能帮忙而不是好奇,我认为会是击球手。