Laden...

Linq Spalte mit mehreren Werten splitten in mehrere Zeilen

Letzter Beitrag vor 7 Jahren 4 Posts 1.657 Views
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

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

Jeah funzt 😃 THX MrSparkle

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

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