int[] num0 = { 28, 32, 14 };
int[] num1 = {14,15,16};
如上,我想把num0中不包含于num1的元素都找出来,其正确结果应该是28,32。早上看到原来linq可以写多个from字句,之后就想到了这样的写法:
int[] num0 = { 28, 32, 14 };
int[] num1 = {14,15,16};
var qq = from n1 in num0
from n2 in num1
where n1 != n2
select n1;
结果,我错了,调试了一下才知道自己想当然了。结果如下:
总共进行了3 * 3,9次比较,那个语句把所有成立的n1都选进去了。
所以还是老老实实用contains好了
int[] num0 = { 28, 32, 14 };
int[] num1 = { 14, 15, 16 };
var bb = from n1 in num0
where num1.Contains(n1) == false
select n1;
另外,推荐一个工具:LinqPad,我的这个例子就是用linqPad 调试的,上面那个结果显示使用了语句:qq.Dump();
网址:http://www.linqpad.net/
下载:
for .net 3.5:http://www.linqpad.net/GetFi