Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq减去两个数组_C#_Linq - Fatal编程技术网

C# 使用Linq减去两个数组

C# 使用Linq减去两个数组,c#,linq,C#,Linq,我有以下类型的两个数组arr1和arr2 class Data { public int IdProduct; public double Price; } 我需要将arr2的价格减去arr1,但是数组的项目是不同查询的结果,因此arr1中的产品数量不一定与arr2中的产品数量匹配,并且数组中没有重复的产品。 我需要在每个数组中逐积进行减法运算,即 var total = from a1 in arr1 join a2 in arr2 on a1.IdProducto equa

我有以下类型的两个数组arr1和arr2

class Data
{
  public int IdProduct;
  public double Price;
}
我需要将arr2的价格减去arr1,但是数组的项目是不同查询的结果,因此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
  };

您有两个总差价的
数据数组

基本上,这段代码将两个数组相加,然后进行减法运算。因此,总的工作量随着阵列的长度呈线性增长:
O(n+m)
类似的情况

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();
你到底是什么意思?(arr2之和)-(arr1之和)?
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();
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();