Vorgehensweise Wählen Sie Alle (*) in linq to sql aus


81

Wie wählt man alle Zeilen aus, wenn man Linq zu SQL macht?

Select * From TableA

Bitte sowohl in der Abfragesyntax als auch in der Methodensyntax.

Antworten:


101
from row in TableA select row

Oder nur:

TableA

In der Methodensyntax mit anderen Operatoren:

TableA.Where(row => row.IsInteresting) // no .Select(), returns the whole row.

Im Wesentlichen wählen Sie bereits alle Spalten aus. Die Auswahl wandelt diese dann in die Spalten um, die Sie interessieren, sodass Sie sogar Folgendes tun können:

from user in Users select user.LastName+", "+user.FirstName

Eine andere, die ich gerne mache, ist .Take (int), um alle Spalten für eine bestimmte Anzahl von Datensätzen abzurufen. Wie TableA.Take (100)
Brian s

Könnten Sie bitte erklären, warum Sie nicht explizit verwenden müssen from row in TableA.Rows? Liegt es daran, dass dies Rowsdie Standardeigenschaft ist? Ist das eine Funktion von LINQ oder etwas, das anderswo eingebrannt wurde? Nur neugierig.
rory.ap

@roryap hängt von Ihrer DB-Zugriffsbibliothek ab. Hier gehe ich von LINQ to SQL aus, wobei die Tabelle die Zeilen, ADO oder was auch immer sein kann.
Simon Buchan

69

Möchten Sie alle Zeilen oder alle Spalten auswählen?

In jedem Fall müssen Sie eigentlich nichts tun.

Der DataContext hat eine Eigenschaft für jede Tabelle. Mit dieser Eigenschaft können Sie einfach auf die gesamte Tabelle zugreifen.

Beispielsweise:

foreach(var line in context.Orders) {
    //Do something
}

1
Ich stimme dieser Frage zu. Dies ist eine weitaus hilfreichere Antwort als die ausgewählte, da sie die Frage des OP einfacher und direkter beantwortet.
Tandrewnichols

2
Diese Antwort verdient die beste Antwort. Lassen Sie uns das beheben :)
d.popov

Vielleicht wurde es eines Tages herabgestuft, weil diese Antwort auch nicht "universell" ist, obwohl sie das OP befriedigt. Wenn ich es mit EF verwende, ist allOrders für mich DBSet und kein IEnumerable, daher kann ich allOrders.Where () nicht direkt danach verwenden. Wahrscheinlich benutze ich es nur falsch oder habe etwas verpasst, aber das Hinzufügen eines .Skip (0) hat die Magie für mich gemacht.
Charles Roberto Canato

24
using (MyDataContext dc = new MyDataContext())
{
    var rows = from myRow in dc.MyTable
               select myRow;
}

ODER

using (MyDataContext dc = new MyDataContext())
{
    var rows = dc.MyTable.Select(row => row);
}

6
Mach beides nicht. Schreiben Sie stattdessen einfach var rows = dc.MyTable.
SLaks

2
Er fragte nach Abfragesyntax und Methodensyntax, damit ich ihm das gebe.
Simon Fox

3
Gib ihm nicht, worum er gebeten hat; gib ihm was er braucht. Er versteht LINQ-to-SQL offensichtlich nicht sehr gut.
SLaks

Nein, ich verstehe LINQ-to-SQL noch nicht sehr gut. Ich habe noch keine Zeit, Bücher darüber zu lesen, aber wenn ich Informationen brauche, schaue ich mich um. Außerdem warte ich, bis die Enity-Frameworks besser sind. Da lerne ich das lieber, da es alle Datenbanken nutzen kann.
Chobo2

2
Fair genug, aber an keiner der von mir angebotenen Lösungen ist etwas auszusetzen. Sie bieten Ihnen eine gute Grundlage für den Aufbau einer komplexeren Abfrage.
Simon Fox

4

Wenn Sie alle Daten aus der Datenbank auswählen möchten, können Sie Folgendes versuchen: -

dbclassDataContext dc= new dbclassDataContext()
List<tableName> ObjectName= dc.tableName.ToList();

Andernfalls können Sie Folgendes versuchen: -

var Registration = from reg in dcdc.GetTable<registration>() select reg;

und Methode Syntex: -

 var Registration = dc.registration.Select(reg => reg); 

2
Dim q = From c In TableA
Select c.TableA

ObjectDumper.Write(q)

1

Angenommen TableAals Entität der Tabelle TableAund TableADBEntitiesals DB-Entitätsklasse,

  1. LINQ-Methode
IQueryable<TableA> result;
using (var context = new TableADBEntities())
{
   result = context.TableA.Select(s => s);
}
  1. LINQ-zu-SQL-Abfrage
IQueryable<TableA> result;
using (var context = new TableADBEntities())
{
   var qry = from s in context.TableA
               select s;
   result = qry.Select(s => s);
}

Native SQL kann auch verwendet werden als:

  1. Natives SQL
IList<TableA> resultList;
using (var context = new TableADBEntities())
{
   resultList = context.TableA.SqlQuery("Select * from dbo.TableA").ToList();
}

Hinweis: dboist ein Standardschemabesitzer in SQL Server. Man kann eine SQL- SELECTAbfrage gemäß der Datenbank im Kontext erstellen.


0

Warum benutzt du nicht?

DbTestDataContext obj = new DbTestDataContext();
var q =from a in obj.GetTable<TableName>() select a;

Das ist einfach.


0

Sie können die einfache Linq-Abfrage wie folgt verwenden, um alle Datensätze aus der SQL-Tabelle auszuwählen

var qry = ent.tableName.Select (x => x) .ToList ();

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.