您好,我是Linq的新手,我发现这个线程可以解释我需要的90% https://stackoverflow.com/questions/2331882?tab=newest#tab-top,感谢“pdr”寻找一个目标数字是通过LINQ得到的数组中的两个数字的总和,并获得和索引
,但我需要的是让指数过,这是我修改我得到的第一个数字的索引,但我不知道如何获得的第二个数字
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var result = from item in numbers.Select((n1, idx) =>
new { n1,idx, shortList = numbers.Take(idx) })
from n2 in item.shortList
where item.n1 + n2 == 7
select new { nx1 = item.n1,index1=item.idx, nx2=n2 };
这当然是O(n平方)。有一个O(n)算法来解决这个问题(如果它们是排序的话) - 本质上是跨矩阵的对角走向 - 但是在LINQ中以纯功能方式实现它需要非常巧妙地使用Aggregate()。 – 2010-04-11 09:02:18
非常感谢Linq是如此的强大,你有什么建议来掌握它。 – 2010-04-12 01:08:04
这听起来像一个新问题:-)关于掌握它的建议... 1.经常使用它; 2.看看每个foreach循环,看看它在LINQ中是否更清晰/更容易表达; 3.按照StackOverflow上的LINQ标签查看所有人问的问题和“正确”的答案。 – 2010-04-12 06:47:38