20 Stimmen

Ihre bevorzugten LINQ-to-Objects-Abfragen

Mit LINQ lassen sich viele Programmierprobleme einfacher lösen - und das mit weniger Codezeilen.

Was sind die besten Beispiele für die reale Welt? LINQ-to-Objects Abfragen, die Sie geschrieben haben?

(Beste = Einfachheit und Eleganz im Vergleich zum C# 2.0 / imperativen Ansatz).

1voto

Anthony Brien Punkte 5966

Wenn Sie eine Liste haben (z. B. List<Palette> palettes ), die Objekte enthält, die eine andere Liste enthalten (d. h. Palette.Colors ) und möchten all diese Unterlisten in einer einzigen Liste zusammenfassen:

List<Color> allColors = palettes.SelectMany(p => p.Colors);

0voto

Filip Ekberg Punkte 35716

Ich habe damit angefangen und es ist großartig!

var myList = from list in myObjectList select list

0voto

Chris Pfohl Punkte 16578

Ich verwende gerne LINQ auf Text, wenn ich Code portiere:

Zum Beispiel:

String.Join("\n", @"some VB6 code
    that I could refactor automatically
    if FindAndReplace were a bit more powerfully
    And I don't want to refactor by hand".Split('\n').Trim().Select(line =>
    {
        if(line.Contains("FindAndReplace") && !line.StartsWith("//"))
        {
            return line.Split(" ").Last();
        }
        else
        {
            return String.Join("_", line.Split(" ").Take(3));
        }
    });

Sie haben die Idee. Mit Linq kann ich die volle Leistung von C# auf die Texttransformation anwenden. Normalerweise verwende ich es, wenn ich Code in einer Sprache habe, den ich extrahieren und auf komplexe Weise manipulieren möchte. Ich gebe den Text allein in LinqPad ein und führe eine Ersetzung der Anführungszeichen durch, wobei ich sie durch doppelte Anführungszeichen ersetze. @"..." und an die Arbeit gehen. Normalerweise kann ich umfangreiche Codeumwandlungen in 30 Sekunden oder so durchführen.

0voto

Matt Punkte 23047

Mein Favorit ist das folgende Linq-Beispiel für Dynamische Sortierung einer SQL-Tabelle von der Nordwind Datenbank:

void Main()
{

// Demonstrates dynamic ordering

var SortExpression = "Total"; // choose ProductName or Total
var sortAscending = true; // choose true for ascending, false for descending

// the query to sort
var data = (from pd in Products
                    join od in OrderDetails on pd.ProductID equals od.ProductID into DetailsByProduct
                    select new { ProductName = pd.ProductName, Total = DetailsByProduct.Count()}).ToList();

// the data source you can use for data binding                     
var ds= (sortAscending) 
    ? data.OrderBy(x => x.GetType().GetProperty(SortExpression).GetValue(x, null))
    : data.OrderByDescending(x => x.GetType().GetProperty(SortExpression).GetValue(x, null));

ds.Dump();
}

Sie können dynamisch sortieren, indem Sie einfach ein Feld in der Variablen SortExpression und eine Sortierreihenfolge in der Variablen sortAscending .

Durch die Verwendung von .Take(x) y .Skip(y) Sie können auch Seitenwechsel implementieren leicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X