【发布时间】:2011-07-13 10:57:58
【问题描述】:
以下 LINQ 语句查找具有特定属性重复值的项,按计数对它们进行分组,然后进行另一个分组以获取布尔值。
我只是好奇如何改进它,这似乎有点浪费,因为这是对象模型验证库的一部分,我很想尽快得到它。
执行速度是重中之重,但欢迎提出任何其他建议。
var grouped = from g2 in
(from i in item.ParentList
where _filter(i)
group i by propGetter(i) into g
select new { Count = g.Count(), Items = g })
group g2 by g2.Count == 1 into g3
select new { IsUnique = g3.Key, Items = g3 };
foreach (var g in grouped)
{
foreach (var grp in g.Items)
{
foreach (var itm in grp.Items)
{
if (g.IsUnique == false)
itm.AddPropertyError(_propertyName, (int)Validations.Unique, _message);
else
itm.RemovePropertyError(_propertyName, (int)Validations.Unique);
}
}
}
【问题讨论】:
-
您想到了什么样的改进?
-
您面临的性能损失是什么?
-
抱歉,已编辑问题以添加更多信息。我并没有真正体验到任何明显的性能影响,它只是看起来(对我来说)有点浪费。无论如何,我都不是 LINQ 大师。
-
@Marlon 为什么要优化一些不会给您带来任何麻烦的东西?
-
我总是乐于学习一些东西 - 我只是认为查询看起来不像是尽其所能地使用 LINQ。
标签: c# .net linq performance optimization