如何连接两个按条件返回所有行和组的数据源?

时间:2011-06-24 09:36:29

标签: linq join

使用LINQ连接两个数据源时遇到问题。由以下查询创建的两个数据源:

var A =(来自....          小组....进入grp          选择新的          {             数量= grp.Count(),             Code = grp.Key.Code,             Name = grp.Key.Name          });

var B =(来自....          小组....进入grp          选择新的          {             数量= grp.Count(),             Code = grp.Key.ContCode,             Name = grp.Key.ContName          });

'A'的值将如下返回:

    Qty-Code-Name

    1-10A-Cont10
    1-20B-Cont20
    1-30C-Cont30 

'B'的值将如下返回:

    Qty-Code-Name

    1-10A-Cont10
    1-20B-Cont20
    1-30C-Cont30
    1-40D-Cont40
    1-50E-Cont50

我想加入A和B(或做一些事情)和结果如下(如果它们具有相同的'代码'和'名称',那么总和列'数量'):

    Qty-Code-Name

    2-10A-Cont10
    2-20B-Cont20
    2-30C-Cont30
    1-40D-Cont40
    1-50E-Cont50

我该怎么办?请帮我。 非常感谢你!

1 个答案:

答案 0 :(得分:3)

通过codename来控制两个数据源而不是分组。 类似的东西:

var q = from v in A.Concat(B)
        group v by new {v.Code,v.Name } into g
        select new
        {
            Qty = g.Sum(a => a.Qty),
            CodeName = g.Key.Code,
            Name = g.Key.Name
         };