webentwicklung-frage-antwort-db.com.de

Wählen Sie eine Methode in der Liste <t> Collection

Ich habe eine asp.net-Anwendung und verwende jetzt Datensätze zur Datenmanipulation. Ich habe vor kurzem damit begonnen, dieses Dataset in eine Listensammlung zu konvertieren. Aber an manchen Orten funktioniert es nicht. In meiner alten Version verwende ich datarow[] drow = dataset.datatable.select(searchcriteria). In der Listensammlung steht jedoch keine Methode zum Suchen bestimmter Werte zur Verfügung. Gibt es eine Möglichkeit, einige Werte anhand meiner Suchkriterien auszuwählen? Ich möchte wissen, ob das möglich ist. Bitte hilf mir.

45
MAC

Nun, um mit List<T> zu beginnen hat die Methoden FindAll und ConvertAll - Der idiomatischere und modernere Ansatz ist jedoch die Verwendung von LINQ:

// Find all the people older than 30
var query1 = list.Where(person => person.Age > 30);

// Find each person's name
var query2 = list.Select(person => person.Name);

Sie benötigen eine using-Direktive in Ihrer Datei, damit dies funktioniert:

using System.Linq;

Beachten Sie, dass diese keine Zeichenfolgen zum Ausdrücken von Prädikaten und Projekten verwenden - sie verwenden Delegaten, die normalerweise wie oben beschrieben aus Lambda-Ausdrücken erstellt werden.

Wenn Lambda-Ausdrücke und LINQ für Sie neu sind, sollten Sie sich zuerst ein Buch über LINQ besorgen, z. B. LINQ in Aktion , Pro LINQ , C # 4 auf den Punkt gebracht oder mein eigenes C # in Depth . Sie können LINQ sicher nur aus Web-Tutorials lernen, aber ich denke, es ist eine so wichtige Technologie, dass es sich lohnt, sich die Zeit zu nehmen, sie gründlich zu erlernen.

143
Jon Skeet

du kannst es auch versuchen

var query = from p in list
            where p.Age > 18
            select p;
8
anishMarokey

Versuche dies:

using System.Data.Linq;
var result = from i in list
             where i.age > 45
             select i;

Verwenden Sie den Lambda-Ausdruck bitte diese Erklärung:

var result = list.where(i => i.age > 45);
4
Hemant Kumar

Die generische List<T> hat die Erweiterungsmethode Where<T>(Func<T, Boolean>) , mit der Daten gefiltert werden können.

In Ihrem Fall mit einem Zeilenarray:

var rows = rowsArray.Where(row => row["LastName"].ToString().StartsWith("a"));

Wenn Sie DataRowCollection verwenden, müssen Sie es zuerst umwandeln.

var rows = dataTableRows.Cast<DataRow>().Where(row => row["LastName"].ToString().StartsWith("a"));
3
Danil

Ich habe ein Skript verwendet, aber um mir beizutreten, kann ich Ihnen vielleicht helfen

string Email = String.Join(", ", Emails.Where(i => i.Email != "").Select(i => i.Email).Distinct());
0
Luiz Pampu