使用C#在Linq中使用Zip方法有什么问题?

时间:2012-07-11 12:04:19

标签: c# linq

我编写了以下用于比较两个表的代码,

var one = db.arabia_upod_item_availability_masters.Where(i => i.locationId == 30).OrderBy(i => i.itemNo).ToList();
var two = db.vw_get_arabia_upod_report_quantityOrderedPerItem_uhjs.OrderBy(i => i.Item_No).ToList();

if (one.Zip(two, (j, k) => j.itemNo == k.Item_No).Any(m => !m))
returnValue = true;
else
returnValue = false;

问题是Zip方法从第一个循环到最后一个循环然后再次循环。例如,如果项目号为1,2,3则经过1,2,3然后再次为1,即使所有值都匹配,它甚至返回false。可能是什么问题?请帮帮我。

2 个答案:

答案 0 :(得分:2)

Zip是一个合并运算符:它将One中的项目与Two中列出的位于同一位置的项目相结合。在我看来,你希望它根据过滤器结合起来。

答案 1 :(得分:0)

Zip将函数应用于两个序列的给定元素并生成结果序列。您可以使用相交运算符返回两个序列的交集

var q = one.Intersect(two)