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
Linq 如何连接两个返回所有行并按条件分组的数据源?_Linq_Join - Fatal编程技术网

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

Linq 如何连接两个返回所有行并按条件分组的数据源?,linq,join,Linq,Join,我在使用LINQ连接两个数据源时遇到问题。由以下查询创建的两个数据源: 变量A=(来自…)。。。。 将…分组为grp 选择新的 { 数量=grp.Count(), 代码=grp.Key.Code, Name=grp.Key.Name }); 变量B=(来自…)。。。。 将…分组为grp 选择新的 { 数量=grp.Count(), 代码=grp.Key.ContCode, Name=grp.Key.ContName }); “A”的值将按如下方式返回: Qty-Code-Name

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

变量A=(来自…)。。。。 将…分组为grp 选择新的 { 数量=grp.Count(), 代码=grp.Key.Code, Name=grp.Key.Name });

变量B=(来自…)。。。。 将…分组为grp 选择新的 { 数量=grp.Count(), 代码=grp.Key.ContCode, Name=grp.Key.ContName });

“A”的值将按如下方式返回:

    Qty-Code-Name

    1-10A-Cont10
    1-20B-Cont20
    1-30C-Cont30 
    Qty-Code-Name

    1-10A-Cont10
    1-20B-Cont20
    1-30C-Cont30
    1-40D-Cont40
    1-50E-Cont50
“B”的值将按如下方式返回:

    Qty-Code-Name

    1-10A-Cont10
    1-20B-Cont20
    1-30C-Cont30 
    Qty-Code-Name

    1-10A-Cont10
    1-20B-Cont20
    1-30C-Cont30
    1-40D-Cont40
    1-50E-Cont50
我想把A和B连接起来(或者做一些事情),结果是这样的(如果它们的“代码”和“名称”相同,那么它们的“数量”列相加):

我怎么做?请帮帮我。
多谢各位

Concat两个数据源,然后按
code
name
分组。 比如:

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
         };

谢谢,它很管用!事实上,我以前尝试过“Concat”方法,但出现了一个错误。现在我再试一次,发现了我的问题。这是因为两个数据源中的“数量”字段不是相同的类型,所以我无法对它们进行“浓缩”。[在我上面的问题中,'Qty=grp.Count()'具有相同类型的'Int']再次感谢!