2014-09-26 16 views
1

使用TPH時,我有不同的類型從基礎繼承。我們有一個搜索查詢抽象類型。在結果中,我們要顯示類型:查詢使用TPH時包含判別符值

即。抽象車輛

汽車:汽車 卡車:車輛

的結果,我想顯示「類型」 - 即。 '汽車'和'卡車'。

我試圖使用GetType()。名稱,但是失敗了。

下面是示例:

IQueryable<CompanySearchResult> q = from company in _ctx.Companies 
               select new CompanySearchResult 
               {               
                CompanyName = company.CompanyName, 
                CompanyId = company.Id, 
                Type = company.GetType().Name 
               }; 
+1

它不應該失敗,這是一個正確的做法。 – 2014-09-26 17:36:00

+0

它是如何失敗? – 2014-09-26 17:36:25

+0

這是我得到的錯誤:System.NotSupportedException:LINQ to Entities不能識別方法'System.Type GetType()'方法,並且此方法不能轉換爲存儲表達式。 – Steve 2014-09-26 17:51:33

回答

1

你,直到你在內存

IEnumerable<CompanySearchResult> q = 
    _ctx.Companies.ToList() 
     .Select(company => 
      new CompanySearchResult 
      {               
       CompanyName = company.CompanyName, 
       CompanyId = company.Id, 
       Type = company.GetType().Name 
      }); 

特別是實體推遲投影,這意味着你不應該仍然有IQueryable投影后,因爲您在內存集合上進行操作。

+0

謝謝 - 這對我有用 – Steve 2014-09-27 13:31:35

+0

我現在有一個第二個問題,我在這個查詢上實現排序和分頁,當我發出查詢 – Steve 2014-09-27 18:05:48

+0

ie時,我無法通過鑑別器進行排序。 'companySearch.sortBy = companySearch.sortBy ?? 「公司名」; (companySearch.pageSize) 查詢=查詢.OrderBy(companySearch.sortBy +(companySearch.sortDesc?「降序」:「」)) – Steve 2014-09-27 18:06:22