這可能不是那麼有用。你可以做的是用LinqPad試一下查詢。通過這段代碼,我能夠得到4個表格並獲得不同表格的總數。 Table1和Table2的總和只是1條記錄的價格。 Table3的總和是屬於Table1和Table2的所有記錄的總和。 Table4有2個總和,因爲Table3與2個表4有關係。
如果您提供更多的細節,也許我可以幫助你。
void Main()
{
var tables4a = new List<Table4>(){new Table4{id=1, price=40}, new Table4{id=2, price=41}};
var tables4b = new List<Table4>(){new Table4{id=1, price=50}, new Table4{id=2, price=51}};
var tables3 = new List<Table3>(){new Table3{id=1, price=20, tables4= tables4a}, new Table3{id=2, price=21, tables4 = tables4b}};
var tables2 = new List<Table2>() {new Table2(){id=1, price=5, tables3= tables3, table1= new Table1(){
id = 1, price = 11
}}};
var Total123 = tables2.Where(x=>x.id ==1)
.SelectMany(x=>x.tables3, (table2,b)=>new{
table2
})
.SelectMany(x=>x.table2.tables3, (table_2,table_3)=>new{
table_2,
table_3
})
.Select(v=> new {
SumTable1= v.table_2.table2.table1.price,
SumTable2= v.table_2.table2.price,
SumTable3 =v.table_2.table2.tables3.Sum(x=>x.price),
SumTable4= v.table_3.tables4.Sum(x=>x.price),
})
.Distinct()
;
Total123.Dump();
}
public class Table1
{
public int id {get;set;}
public int price {get; set;}
}
public class Table2
{
public int id {get;set;}
public int price {get; set;}
public Table1 table1 {get; set;}
public List<Table3> tables3 {get; set;}
}
public class Table3
{
public int id {get;set;}
public int price {get; set;}
public List<Table4> tables4 {get; set;}
}
public class Table4
{
public int id {get;set;}
public int price {get; set;}
}
請表現出一定的模型和你已經嘗試了什麼。 SO有一個很好的文檔部分,其中包含連接的linq查詢示例 –
表2,3,4中的SUM是否與其他表中的SUM相同或是否是單獨的? –