在不同的列上使用 LINQ 连接三个表并在最后打印总和 [重复]

Posted

技术标签:

【中文标题】在不同的列上使用 LINQ 连接三个表并在最后打印总和 [重复]【英文标题】:join three tables with LINQ on different columns and print sum at the end [duplicate] 【发布时间】:2021-05-28 10:34:00 【问题描述】:

如图所示,我有 3 个表。

var table1 = new[]

    new  Col1 = 1, Col2 = 'A', ,
;

var table2 = new[]

    new  Col1 = 'A', Col2 = 'X', ,
    new  Col1 = 'B', Col2 = 'Y', ,
;

var table3 = new[]

    new  Col1 = 1, Col3 = 'X', Col4 = 100, ,
    new  Col1 = 1, Col3 = 'Y', Col4 = 200, ,
    new  Col1 = 2, Col3 = 'X', Col4 = 400, 
;

需要行 -> 1, A, X, 100

我尝试了How to join 3 tables with linq,但不起作用。

请帮助提供确切的代码。我是 SQL 新手。

【问题讨论】:

把你的尝试放在问题中,解释为什么你所拥有的东西不起作用。 您想要 LINQ 还是 SQL 中的示例?从问题上看不清楚。 我需要 LINQ @Andrei15193 @Larnu 我尝试了***.com/questions/41933985/… your 尝试放入问题中,@RPD ...显然,您在实施解决方案时没有正确更改解决方案,所以如果您向我们展示您的实际尝试,我们可以告诉您哪里出错了。 【参考方案1】:

试一试:

var table1 = new[]

    new  Col1 = 1, Col2 = 'A', ,
;

var table2 = new[]

    new  Col1 = 'A', Col2 = 'X', ,
    new  Col1 = 'B', Col2 = 'Y', ,
;

var table3 = new[]

    new  Col1 = 1, Col3 = 'X', Col4 = 100, ,
    new  Col1 = 1, Col3 = 'Y', Col4 = 200, ,
;

var query =
    from t1 in table1
    join t2 in table2 on t1.Col2 equals t2.Col1
    join t3 in table3 on t2.Col2 equals t3.Col3
    where t3.Col1 == t1.Col1
    select new
    
        t1.Col1, Col22 = t1.Col2, Col23 = t2.Col2, t3.Col4,
    ;

我明白了:

1 A X 100

但是,由于您使用 ColX 的命名约定和重复值,它使一些事情变得模棱两可。如果正确命名的字段具有明显不同的值,那就太好了。

【讨论】:

select new MyProjectViewModel myClassProperty = IShouldGetValue100 请帮我定义 IShouldGetValue100 @RPD - “定义 IShouldGetValue100”是什么意思? 我已经编辑了您的建议来回答我的问题。我还编辑了在数据中添加第三行的问题。对于这样的数据行,需要“条件”。

以上是关于在不同的列上使用 LINQ 连接三个表并在最后打印总和 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 2 个不同的列上使用 group by 并在 mysql 中使用 SUM 函数

Postgres - 连接三个表并在查询中对数据使用聚合函数

JPA 或 Hibernate - 在不同类型的列上连接表

如何使用 LINQ to SQL 在计算列上获得不同的值?

LINQ:如何使用动态键连接两个数据表

列上加索引时事有条件