[英]Select distinct column name from db using LINQ
我有一個表,其中有幾列,包括 CarMake、CarModel、CarModelLoading 等。我想 select 不同的 CarMake 並將它們作為列表返回。 我嘗試了以下方法:
public IEnumerable<EbimaCarMakesAndModel> GetAll()
{
//var list<ebima>
return (IEnumerable<EbimaCarMakesAndModel>)context.EbimaCarMakesAndModels.Select(l => new { l.CarMake }).Distinct().ToList();
//var data = (from dbo in context.EbimaCarMakesAndModels where dbo.Listed == "Y" select dbo.CarMake).Distinct().OrderBy(name => name).ToList();
//return (IEnumerable<EbimaCarMakesAndModel>)data;
}
但是每當運行該應用程序時,我都會收到錯誤消息:
處理請求時發生未處理的異常。 InvalidCastException: Unable to cast object of type 'System.Collections.Generic.List
1[<>f__AnonymousType31
1[System.String]]' to type 'System.Collections.Generic.IEnumerable`1[motor_backend.Models.EbimaCarMakesAndModel]'. 我也嘗試了以下但無濟於事:
public IEnumerable<EbimaCarMakesAndModel> GetAll()
{
var res = context.EbimaCarMakesAndModels.GroupBy(x => new { x.CarMake }).
Select(x => x.FirstOrDefault()).Where(v => v.Listed == "Y").ToList();
return res;
}
它給了我以下錯誤:
FirstOrDefault()' 無法翻譯。 以可翻譯的形式重寫查詢,或通過插入對“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的調用顯式切換到客戶端評估。 有關詳細信息,請參閱https://go.microsoft.com/fwlink/?linkid=2101038 。
到目前為止,這里給出的所有解決方案都沒有回答我的問題
要么聲明您的方法以返回字符串的 IE:
public IEnumerable<string> GetAllMakes()
而您的查詢不是創建匿名類型,而只是 select 的品牌:
return context.EbimaCarMakesAndModels.Select(l => l.CarMake).Distinct().ToList();
或按 make 分組並從組列表中返回一些名義條目(但這對我來說真的沒有意義)
return context.EbimaCarMakesAndModels.GroupBy(x => x.CarMake)
.Select(x => x.FirstOrDefault()).ToList();
您的最后一個查詢引入了一些額外的未提及的約束.Where(v => v.Listed == "Y")
- 也許在分組之前考慮在EbimaCarMakesAndModels
上執行此操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.