2017-04-22 3 views
0

Ich habe 4 Tabellen ohne FK anderer wie folgt aus:Multi Table verbinden und Gruppe in Linq

Tabelle 1: ID, Zahl, Datum, Preis

Table2: ID, Zahl, Datum, Preis, Table1Number, Table1Date

Table3: ID, Zahl, Datum, Preis, Table2Number, Table2Date

Table4: ID, Zahl, Datum, Preis, Table3Number, Table3Date

Ich möchte diese Ausgabe:

Table1.Number, Table1.Date, Table1.Price,

Table2.Number, Table2.Date, Table2.Price (Sum Preis)

Table3.Number, Table3.Date, Table3.Price (Sum Preis)

Table4.Number, Table4.Date, Table4.Price (Sum Preis)

table1-table2 ist eine One-One-Relation, aber table2-table3 und table3-table4 sind One-Many.

Ich verwirrt, um sie in Linq zu verbinden und Summenpreis jeder Tabelle zu erhalten!

+1

zeigen Bitte einige Modelle und was Sie versucht haben. SO hat eine große Dokumentation Abschnitt mit Beispielen für Linq-Abfragen einschließlich Joins –

+0

Sind die Summen in Tabellen 2,3,4 Zwischensummen aus den anderen Tabellen, die vor ihnen kamen oder sind sie getrennt? –

Antwort

0

Das ist vielleicht nicht so hilfreich. Was Sie tun können, ist, die Abfragen mit LinqPad auszuprobieren. Mit diesem Code konnte ich 4 Tabellen erhalten und die Summe der verschiedenen Tabellen erhalten. Die Summe von Tabelle1 und Tabelle2 sind nur der Preis von 1 Datensatz. Die Summe von Tabelle3 ist die Summe aller Datensätze, die zu Tabelle1 und Tabelle2 gehören. Tabelle 4 enthält 2 Summen, da Tabelle 3 Beziehungen zu 2 Tabellen4 aufweist.

Wenn Sie mehr Details geben, kann ich Ihnen vielleicht weiter helfen.

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

enter image description here