Laden...

Linq Spalte mit mehreren Werten splitten in mehrere Zeilen

Erstellt von Cornflake vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.611 Views
C
Cornflake Themenstarter:in
142 Beiträge seit 2007
vor 7 Jahren
Linq Spalte mit mehreren Werten splitten in mehrere Zeilen

verwendetes Datenbanksystem: Linq C#

Hallo Leute

Habe folgende Quelltabelle:


SP1; SP2    ; SP3   ; SP4
1  ; A      ; Text1 ; Text2
2  ; A B    ; Text3 ; Text4
3  ; A B C  ; Text5 ; Text6

Daraus soll durch ein Splitting in Spalte 2 Zeilenduplikate als folgende Zieltabelle entstehen:


SP1; SP2; SP3   ; SP4
1  ; A  ; Text1 ; Text2
2  ; A  ; Text3 ; Text4
2  ; B  ; Text3 ; Text4
3  ; A  ; Text5 ; Text6
3  ; B  ; Text5 ; Text6
3  ; C  ; Text5 ; Text6

Leider konte ich durch google , suche.. kein Beispiel bisher dazu finden.

Wie nennt man sowas, bzw. wichtiger, wie lautet der passende Linq Befehl.

Folgender Befehl geht in die richtige Richtung, passt aber noch nicht ganz, da die restlichen Spalten nicht passend mit dupliziert werden.


var  x = from s in Quelltabelle
             select new 
            { 
              SP1 = SP1,
              SP2 = SP2.split(' '),
              SP3 = SP3,
              SP4 = SP4
            }

Beste Grüße
Cornflake

5.658 Beiträge seit 2006
vor 7 Jahren

Hi Cornflake,

die Methode, die du suchst, ist wahrscheinlich SelectMany:

var result = Quelltabelle
  .SelectMany(m => m.SP2.Split(' ').Select(n => new
            {
              SP1 = m.SP1,
              SP2 = n,
              SP3 = m.SP3,
              SP4 = m.SP4
            }));

Weeks of programming can save you hours of planning

C
Cornflake Themenstarter:in
142 Beiträge seit 2007
vor 7 Jahren

Jeah funzt 😃 THX MrSparkle

Gibts das eigentlich auch in der nicht ".funktionsname(...)" Schreibweise?

5.658 Beiträge seit 2006
vor 7 Jahren

Benutze ich nie, aber die Doku sagt:

In query expression syntax, each from clause (Visual C#) or From clause (Visual Basic) after the initial one translates to an invocation of SelectMany<TSource,TResult>.

Weeks of programming can save you hours of planning