Ich möchte Array von Werten einer einzelnen Spalte in einer Tabelle abrufen, zum Beispiel habe ich eine Tabelle mit dem Namen Customer(ID,Name), und möchte ids aller Kunden abrufen. meine Abfrage in LINQ ist:
var ids = db.Customers.Select(c=>c.ID).ToList();
Die Antwort auf diese Abfrage ist richtig, aber ich habe SQL Server Profiler ausgeführt und die Abfrage wie folgt gesehen:
SELECT [t0].[ID], [t0].[Name] FROM [dbo].[Customer] AS [t0]
Ich habe verstanden, dass LINQ alle Spalten auswählt und dann das Integer-Array der ID-Felder erstellt.
Wie kann ich eine LINQ-Abfrage schreiben, die diese Abfrage in SQL Server erzeugt?
SELECT [t0].[ID] FROM [dbo].[Customer] AS [t0]
Ich danke Ihnen.
UPDATE: Ich habe eine Funktion für diese Aufgabe, und diese Funktion führt zu diesem Ergebnis:
public static List<TResult> GetSingleColumn<T, TResult>(Func<T, bool> predicate, Func<T, TResult> select) where T : class
{
using (var db = new DBModelDataContext())
{
var q = db.GetTable<T>().AsQueryable();
if (predicate != null)
q = q.Where(predicate).AsQueryable();
return q.Select(select).ToList();
}
}
und verwenden Sie es wie folgt:
var ids = DBMH.GetSingleColumn<Customer, int>(null, c => c.ID);