在不同的列上使用 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 函数