Linq查询自动排除重复项(单行)

Cal*_*res 6 c# linq optimization query-optimization

我有项目euler问题243的linq查询:

var y = from n in factors
        from m in factors where m != n
        select n * m;
Run Code Online (Sandbox Code Playgroud)

问题是,对于素数因子2和3,它产生y = {6,6},其中它只需要{6}.

有没有办法在不多次调用y.Distinct()或y.Contains()的情况下执行此操作?

我还想过使用两个foreach循环,但问题是 - 我不能使用索引,所以它只是麻烦和笨拙.

Cal*_*res 1

正如Rick Sladkey所说,改变

    from m in factors where m != n
Run Code Online (Sandbox Code Playgroud)

到

    from m in factors where m < n
Run Code Online (Sandbox Code Playgroud)

无需使用即可产生正确的结果.Distinct()。