verwendetes Datenbanksystem: C# 4.6.1 Linq
Hallo
Befehle wie:
...
var erg = from z in quelle
where z[1].Length > 1
select new { z[0], z[2] };
...
sind ja äußerst praktisch.
Aber wie kann ich "erg" als Parameter an eine andere Methode übergeben?
Problem:
Ich habe habe eine Methode in der Dateien als Tabellen eingelesen werden, dann mit 3 Linq Befehlen vorbereitet werden und dann für 2 Ausgaben wieder mit Linq ähnlich oben geändert werden. Inzwischen müssten da noch mehr Ausgaben per Linq erzeugt werden. Nur in einer Methode finde ich das zu unübersichlicht. Daher aus:
Auswerten(){...}
...soll jetzt werden:
Auswerten_Eingabe(){...}
Auswerten_Vorbereitung(tabelle1,tabelle2){...}
Auswerten_Ausgabe(tabelle,Filter){...}
Nur wie kann ich da die Linq Tabellen übergeben?
Beste Grüße
Cornflake
Bis VS2015: garnicht
Ab VS2017 werden auch die C#7-Features unterstützt. Da sind dann auch die Tuples mit dabei, mit denen geht das.
Wenn Du nicht umsteigen kannst/darfst, dann kommst Du nicht drum herum, irgendein anderes Datenformat zu nutzen.
Entweder Du baust eine Klasse dafür oder Du nimmst dynamic.
Ich würde die Klasse empfehlen.
Wer [...] kann, ist klar im Vorteil.
lock
Alternative fürasync
/await
: https://github.com/loop8ack/AsyncTicketLock
Hallo,
solange Du mit anonymen Typen arbeitest (new { z[0], z[2] }
) geht das nur, wenn Du das Ergebnis als dynamic
übergibst.
Oder Du erstellst einen eigenen Typen, dann ist das Ergebnis einfach ein IEnumerable<DeinSchönerTyp>
, und kann auch so übergeben werden.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Wegen dynamic werde ich mal googeln thx 😃.
Ansonsten freue ich mich eh schon auf den 7.3.17
Ansonsten freue ich mich eh schon auf den 7.3.17
Kannst/Darfst Du Visual Studio 2017 und auch die C#7-Features nutzen?
Ich arbeite jetzt schon seit einigen Tage/ein paar Wochen damit und finde das durchaus gut gelungen.
Besonders das Feature, XAML zur Laufzeit anpassen zu können ist klasse. Es hat noch einige Kinderkrankheiten, aber für einfache Dinge wie Margins funktioniert das super.
Von daher würde ich sagen:
Warum warten? Einfach mal ausprobieren ^^
Wer [...] kann, ist klar im Vorteil.
lock
Alternative fürasync
/await
: https://github.com/loop8ack/AsyncTicketLock
Kannst/Darfst Du Visual Studio 2017 und auch die C#7-Features nutzen?
Ja. Hab mir aber noch nicht alle Details angeschaut.
Werde die neue Version wohl erst ab März testen können.
Bin u.a. auch schon auf die Tuples gespannt.
Kleines Feedback:
C# 4.6.1 Linq
Das gibt es nicht. Es gibt .NET Framework 4.6.1.
Die C# Versionierung ist aber unabhängig vom .NET Framework.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi Cornflake,
Bin u.a. auch schon auf die Tuples gespannt.
was hält dich davon ab, jetzt bereits explizit Tuples (oder eigene, spezifischere Typen) zu verwenden?
var erg = from z in quelle
where z[1].Length > 1
select new Tuple<int, string>(z[0], z[2]);
DoSomething(erg);
void DoSomething(IEnumerable<Tuple<int, string>> result)
{
//...
}
Weeks of programming can save you hours of planning
@MrSparkle
Das .net 4.6.1 habe ich noch nicht so lange im Einsatz. Stimmt da gibts doch schon Tuples 8o. Hatte die bisher noch nicht gesehen/genutzt.
thx 😁
Tuple als Klasse im Framework gibt es seit .NET 4.0 (seit 2010). Tuple als eigener Syntax ab C# 7.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hatte bisher VS2008 und .net 3.5 im Einsatz. Daher war das letztlich ein ziemlicher Sprung.