簡體   English   中英

Select 使用 LINQ 與 db 不同的列名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM