我想要獲取表中單個列的值數組,例如,我有一個名爲Customer(ID,Name)的表,並且想要獲取所有客戶的ID。我在LINQ查詢:使用LINQ查詢單列
var ids = db.Customers.Select(c=>c.ID).ToList();
該查詢的答案是正確的,但我跑SQL Server Profiler中,只見這是本查詢:
SELECT [t0].[ID], [t0].[Name] FROM [dbo].[Customer] AS [t0]
我明白了LINQ選擇所有列,然後創建ID字段的整數數組。
我如何寫一個LINQ查詢生成的SQL Server的查詢:
SELECT [t0].[ID] FROM [dbo].[Customer] AS [t0]
謝謝。
更新:我有這樣做的一個功能,該功能使這一結果:
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();
}
}
,並使用它像這樣:
var ids = DBMH.GetSingleColumn<Customer, int>(null, c => c.ID);
太棒了!多謝,夥計。 – 2013-06-08 09:36:38