2012-07-11 35 views
2

我寫了下面的代碼用於比較兩個表,使用C#在Linq中的Zip方法有什麼問題?

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; 

的問題是,郵編方法從第一循環到最後,然後再先。例如,如果項目號爲1,2,3,則它會經過1,2,3,然後再返回1,即使所有值都匹配,它甚至會返回false。可能是什麼問題?請幫幫我。

回答

2

Zip是一個組合操作:它結合了項目從OneTwo在列表中的相同位置是項目。在我看來,你期望它根據過濾器進行組合。

0

Zip將函數應用於給定的兩個序列的元素併產生結果的序列。您可以使用交集運算符返回兩個序列的交集

var q = one.Intersect(two)