Hallo,
ich habe ein Datatable mit mehreren Datensätzen wobei 3 Kriterien pro Datensatz eindeutig sein müssen und davon möchte ich den ersten nehmen bzw. den mit dem kleinsten Wert
Z.Bsp.
In meiner Abfrage müssen die Felder TsNr,Nummer,TabelleZeilenNr identisch sein und dann nur den Datensatz nehmen, der mit Zeilennr den kleinsten Wert hat
Als Ergebnis sollten somit die ersten beiden Zeilen nur ausgegeben werden.
Ein Kollege hat mir das in C# umgesetzt, allerdings benötige ich dieses in VB
Ich habe das Ganze durch einen Converter laufen lassen aber mein Ergebnis sind immer alle Datensätze
Hier der Code in c#
Und hier die Übersetzung in VB
Das Problem liegt vermutlich in der letzten Zeile da >= fehlt aber ich bekomme das einfach nicht hin. Kann mir das jemand übersetzen bzw. sagen wie ich das richtig umsetze?
ich habe ein Datatable mit mehreren Datensätzen wobei 3 Kriterien pro Datensatz eindeutig sein müssen und davon möchte ich den ersten nehmen bzw. den mit dem kleinsten Wert
Z.Bsp.
ZuEl | TsNr | Nummer | TabelleZeilenNr | Bemerkung | Zeilennr |
Köln | TS001090 | S863131 | 10000 | Test 1 | 10000 |
Berlin | TS001090 | S863132 | 10000 | Test 2 | 20000 |
Berlin | TS001090 | S863132 | 10000 | Test 3 | 30000 |
In meiner Abfrage müssen die Felder TsNr,Nummer,TabelleZeilenNr identisch sein und dann nur den Datensatz nehmen, der mit Zeilennr den kleinsten Wert hat
Als Ergebnis sollten somit die ersten beiden Zeilen nur ausgegeben werden.
Ein Kollege hat mir das in C# umgesetzt, allerdings benötige ich dieses in VB
Ich habe das Ganze durch einen Converter laufen lassen aber mein Ergebnis sind immer alle Datensätze
Hier der Code in c#
Quellcode
- var rows = dt.AsEnumerable().Select(row => new Row {
- Nr = row.Field<string>("TsNr"),
- Nummer = row.Field<string>("Nummer"),
- TabelleZeilenNr = row.Field<int>("TabelleZeilenNr"),
- Bemerkung = row.Field<string>("Bemerkung"),
- ZeilenNr = row.Field<int>("Zeilennr"),
- Zu = row.Field<string>("ZuEl"),
- }).ToList();
- var rows2 = rows.GroupBy(el => new { el.Nr, el.Nummer, el.TabelleZeilenNr }).ToList();
- var rows3 =
- rows2.Select(
- gr => gr.OrderBy(x => x.ZeilenNr).Select(x => new { x.Bemerkung, x.Zu } ).First()
- ).ToList();
Und hier die Übersetzung in VB
Quellcode
- Dim rows = dt.AsEnumerable().[Select](Function(row) New Row With {
- .Nr = row.Field(Of String)("TsNr"),
- .Nummer = row.Field(Of String)("Nummer"),
- .TabelleZeilenNr = row.Field(Of Integer)("TabelleZeilenNr"),
- .Bemerkung = row.Field(Of String)("Bemerkung"),
- .ZeilenNr = row.Field(Of Integer)("Zeilennr"),
- .Zu = row.Field(Of String)("ZuEl")
- }).ToList()
- Dim rows2 = rows.GroupBy(Function(el) New With {el.Nr, el.Nummer, el.TabelleZeilenNr
- }).ToList()
- Dim rows3 = rows2.[Select](Function(gr) gr.OrderBy(Function(x) x.ZeilenNr).[Select](Function(x) New With {x.Bemerkung, x.Zu
- }).First()).ToList()
Das Problem liegt vermutlich in der letzten Zeile da >= fehlt aber ich bekomme das einfach nicht hin. Kann mir das jemand übersetzen bzw. sagen wie ich das richtig umsetze?