var multiples = from i in Enumerable.Range(min,(max - min)) from r in roots where i % r == 0 select i;
例如,如果roots = {2,10},它将选择20两次.
这可以避免重复吗?
解决方法
您可以使用Any()而不是完整的笛卡尔连接:
var multiples = from i in Enumerable.Range(min,(max - min)) where roots.Any(r => i % r == 0) select i;
这有一个额外的好处,它一旦找到成功的元素就会停止在根中测试元素,并且它不需要第二次传递来拉出不同的元素.