gpt4 book ai didi

c# - 自动排除重复项的Linq查询(单行)

转载 作者:太空狗 更新时间:2023-10-29 21:55:23 25 4
gpt4 key购买 nike

我有一个针对项目欧拉问题 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 循环,但问题是 - 我不能使用索引,所以它既麻烦又笨拙。

最佳答案

您可以对结果值进行不同的调用。这样您就不必在内循环中执行此操作。

var y = factors.SelectMany(n => factors.Where(m => n < m).Select(m => n * m)).Distinct();

如果 factors = new[] { 2,3 } 你得到 { 6 } 作为结果。此外,如果 factors = new[] { 2,3,4,6 } 你得到 { 6,8,12,18,24 } 而不是 { 6 ,8,12,12,18,24 。注意结果中没有额外的 12

关于c# - 自动排除重复项的Linq查询(单行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com