今天早上我一直在玩linq,並且有一個關於比較兩個詞典的問題。我想比較兩個dicionarys並返回差異。通過在我的foreach循環中minuplating查詢,我能夠產生我想要的輸出。但是,我想知道是否有運營商可以讓我更簡化一點。下面我列出了我想要簡化的代碼。使用linq的兩個詞典之間的區別
var _ItemsBefore = new SortedDictionary<int, int>() { { 1, 12 }, { 2, 12 } };
var _ItemsAfter = new SortedDictionary<int, int>() { { 1, 11 }, { 2, 8 } { 3, 1 } };
foreach(var item in _ItemsAfter.Except(_ItemsBefore))
{
if(_ItemBefore.ContainsKey(item.Key))
Console.WriteLine(string.format("{0} {1}", item.Key, _ItemsAfter[item.Key] -_ItemsBefore[item.Key]));
else
Console.WriteLine(string.format("{0} {1}", item.Key, item.Value)
}
results
1 -1
2 -4
3 1
如果第一本字典中有{5,10}您的輸出結果是什麼? – 2012-01-16 18:09:15
這將是相同的結果。我只對改變了什麼感興趣。你從庫存的角度來看待這個問題。之前是所有的項目在一天開始,後是項目在結束。您可能在白天已售出物品或收到物品。我對我賣出的東西和我收到的東西感興趣?我希望我明白這一點。 – poco 2012-01-16 18:24:53