2013-04-11 57 views
-1

我有兩個數組ARR1和以下類型減去使用LINQ

class Data 
{ 
    public int IdProduct; 
    public double Price; 
} 

ARR2,我需要減去ARR2的價格ARR1兩個數組但的項目陣列是不同查詢的結果,所以產品數量arr1不一定與arr2中的產品數量相匹配,並且沒有重複的pr在陣列中生成。

我需要在每個陣列中按乘積做減法乘積,即。

var total = 
    from a1 in arr1 
    join a2 in arr2 on a1.IdProducto equals a2.IdProducto 
    select new 
    { 
    Product = a1.IdProduct, 
    Price = a1.Price - a2.Price 
    }; 
+3

什麼豆你到底是什麼意思? (arr2的和) - (arr1的和)? – 2013-04-11 15:16:46

回答

2

是這樣的嗎?

var q = from a in arr1 
        join b in arr2 on a.IdProduct equals b.IdProduct into c 
       from x in c.DefaultIfEmpty() 
       select new Data { 
       IdProduct = a.IdProduct, 
       Price = x == null ? a.Price : a.Price - x.Price 
       }; 

arr1 = q.ToArray(); 
+0

它的工作原理,感謝您的快速響應 – vcRobe 2013-04-11 15:46:35

0

你有Data兩個陣列與總差價

arr1.Sum(d => d.Price) - arr2.Sum(d => d.Price); 

基本上這個代碼概括了兩個陣列事後減去。總的努力是線性增長與陣列的長度:O(n+m)

1
var result = arr1.Concat(arr2) 
      .GroupBy(d => d.IdProduct) 
      .Select(x => new Data 
      { 
       IdProduct = x.Key, 
       Price = x.Select((y,i) => i == 0 ? y.Price : -y.Price).Sum() 
      }).ToList(); 
+1

它的工作原理,謝謝 – vcRobe 2013-04-11 15:47:05