我有以下类型的两个数组 arr1 和 arr2
class Data
{
public int IdProduct;
public double Price;
}
我需要将 arr2 的价格减去 arr1 ,但数组的项目是不同查询的结果,因此 < em> arr1 不一定与 arr2 中的产品数量相匹配,并且数组中没有重复的产品。
我需要在每个数组中按产品做减法产品,即。
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
};
答案 0 :(得分: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();
答案 1 :(得分: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();
答案 2 :(得分:0)
您有两个Data
数组总价格差异?
arr1.Sum(d => d.Price) - arr2.Sum(d => d.Price);
基本上这段代码总结了两个数组并在之后减去。因此,总体努力线性增长与数组的长度:O(n+m)
。