Jak to zrobić Zaznacz wszystko (*) w linq do sql

84

Jak wybrać wszystkie wiersze podczas wykonywania linq do sql?

Select * From TableA

Prosimy o podanie zarówno składni zapytania, jak i metody.

chobo2
źródło

Odpowiedzi:

104
from row in TableA select row

Lub tylko:

TableA

W składni metody, z innymi operatorami:

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

Zasadniczo już wybierasz wszystkie kolumny, a następnie zaznaczanie przekształca je w kolumny, na których Ci zależy, dzięki czemu możesz nawet robić takie rzeczy, jak:

from user in Users select user.LastName+", "+user.FirstName
Simon Buchan
źródło
Innym, który lubię robić, jest .Take (int), aby pobrać wszystkie kolumny dla podanej liczby rekordów. Takich jak TableA.Take (100)
brian s
Czy mógłbyś wyjaśnić, dlaczego nie musisz jawnie używać from row in TableA.Rows? Czy to dlatego, że Rowsjest to właściwość domyślna? Czy to cecha LINQ, czy coś wypieczonego gdzie indziej? Po prostu ciekawy.
rory.ap
@roryap zależy od twojej biblioteki dostępu do bazy danych, tutaj zakładam LINQ to SQL, gdzie tabela to wiersze, ADO lub cokolwiek innego może być inne.
Simon Buchan
69

Chcesz zaznaczyć wszystkie wiersze czy wszystkie kolumny?

Tak czy inaczej, właściwie nie musisz nic robić.

DataContext ma właściwość dla każdej tabeli; możesz po prostu użyć tej właściwości, aby uzyskać dostęp do całej tabeli.

Na przykład:

foreach(var line in context.Orders) {
    //Do something
}
SLaks
źródło
1
Odpowiadam na to pytanie. Jest to o wiele bardziej pomocna odpowiedź niż wybrana, ponieważ jest prostsza i bardziej bezpośrednio odpowiada na pytanie PO.
tandrewnichols
2
Ta odpowiedź zasługuje na najlepszą odpowiedź.
Naprawmy
Być może został kiedyś odrzucony, ponieważ ta odpowiedź też nie jest „uniwersalna”, chociaż spełnia PO. Dla mnie, gdy używam go z EF, allOrders to DBSet, a nie IEnumerable, więc nie mogę allOrders.Where () zaraz po tym. Prawdopodobnie używam go w niewłaściwy sposób lub coś przeoczyłem, ale dodanie .Skip (0) uczyniło dla mnie magię.
Charles Roberto Canato
24
using (MyDataContext dc = new MyDataContext())
{
    var rows = from myRow in dc.MyTable
               select myRow;
}

LUB

using (MyDataContext dc = new MyDataContext())
{
    var rows = dc.MyTable.Select(row => row);
}
Simon Fox
źródło
6
Nie rób żadnego z tych. Zamiast tego po prostu napisz var rows = dc.MyTable.
SLaks
2
poprosił o składnię zapytania i składnię metody, więc to właśnie mu daję.
Simon Fox
3
Nie dawaj mu tego, o co prosił; daj mu to, czego potrzebuje. Oczywiście nie bardzo dobrze rozumie LINQ-to-SQL.
SLaks
Nie, nie rozumiem jeszcze dobrze LINQ-to-SQL. Nie mam czasu czytać książek na ten temat, ale kiedy potrzebuję informacji, zaczynam się rozglądać. Dodatkowo czekam, aż frameworki Enity będą lepsze. Ponieważ raczej się tego uczę, ponieważ może używać wszystkich baz danych.
chobo2
2
W porządku, jednak nie ma nic złego w żadnym z przedstawionych przeze mnie rozwiązań. Dają dobrą podstawę do tworzenia zapytań o większej złożoności.
Simon Fox
4

Chcesz wybrać wszystkie dane z bazy danych, możesz spróbować tego: -

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

w przeciwnym razie możesz spróbować tego: -

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

i metoda Syntex: -

 var Registration = dc.registration.Select(reg => reg); 
Radość
źródło
2
Dim q = From c In TableA
Select c.TableA

ObjectDumper.Write(q)
SattiS
źródło
1

Możesz użyć prostego zapytania linq w następujący sposób, aby wybrać wszystkie rekordy z tabeli sql

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

anagha
źródło
1

Przyjmując TableAjako jednostkę tabeli TableAi TableADBEntitiesjako klasę DB Entity,

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

Native SQL można również używać jako:

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

Uwaga: dbojest domyślnym właścicielem schematu w SQL Server. SELECTZapytanie SQL można skonstruować zgodnie z bazą danych w kontekście.

Dinesh Mandal
źródło
0

Dlaczego nie używasz

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

To jest proste.

Jestem legendą
źródło
0

Często potrzebuję pobrać wszystkie kolumny, z wyjątkiem kilku. więc Select (x => x) nie działa dla mnie.

Edytor LINQPad może automatycznie rozszerzać * do wszystkich kolumn.

wprowadź opis obrazu tutaj

po wybraniu „* all” LINQPad rozwija *, a następnie mogę usunąć niepotrzebne kolumny.

wprowadź opis obrazu tutaj

Rm558
źródło