【发布时间】:2011-12-12 06:55:34
【问题描述】:
我有一个针对项目欧拉问题 243 的 linq 查询:
var y = from n in factors
from m in factors where m != n
select n * m;
问题在于,对于素因数 2 和 3,它会产生 y = {6, 6},而它只需为 {6}。
有没有办法在不多次调用 y.Distinct() 或 y.Contains() 的情况下做到这一点?
我也考虑过使用两个 foreach 循环,但问题是 - 我不能使用索引,所以它会很麻烦和尴尬。
【问题讨论】:
-
不同的会起作用。为什么你不想使用 Distinct?
-
1) 这意味着我必须再次浏览集合,如果您已经嵌套在多个循环中,这可能意味着很多。 2)一般美学:)
-
所以你想要 1 班轮?像 var y= ( from .... m).Distinct();也将是 1 班轮。
-
使用
where m < n。 -
@Rick facepalm - 太棒了
标签: c# linq optimization query-optimization