2009-07-14 816 views
2

這到底是什麼意思?忽略返回,並得到,結果將是扁平化和卡在應用程序內存(所以這將是一組......可能)

「找不到源類型'System.Linq.IQueryable'的查詢模式的實現。未找到'加入'。考慮顯式指定範圍變量 'a' 的類型。」Linq錯誤「無法找到源類型的查詢模式的實現'System.Linq.IQueryable'未找到聯接'

private CommonDataResponse toCommonData 
     { 
      get 
      { 
       CommonDataResponse toCommonData = this.gatewayReference.GetCommonData(); 
       Array dCountries = toCommonData.PropertyCountries.ToArray(); //Webservice sends KeyValuePairOfString 
       Array dRegions = toCommonData.Regions; //Webservice sends Array 
       Array dAreas = toCommonData.Areas; //Webservice sends Array 

        var commonRAR = from a in dAreas 
         join r in dRegions 
         on a.RegionID equals r.Id 
         join c in dCountries 
         on r.CountryCode equals c.Key 
         select new {c.Value, r.Name, a.Name, a.Id }; 



        return toCommonData; 
      } 
     } 

dRegions/dAreas兩個陣列,dCountries是.toArray()

回答

3

Array是非常鬆的類型,並且不執行IEnumerable<T>等,你可以嘗試只在Array線切換到var(讓編譯器挑類型)。如果它仍然使用Array,那麼也許使用.Cast<T>()指定類型(或Array.ConvertAll等)。

來自Array(沒有更多信息)它只知道是object

基本上,Join被定義(作爲一個擴展方法)上IEnumerable<T>IQueryable<T> - 不IEnumerable(不<T>)。

+0

a.RegionID和r.Id int類型 r.CountryCode和c.Key類型字符串 – 2009-07-14 20:31:30

+0

應的已RegionId不RegionID Oh和改變了陣列到無功;○)由於 – 2009-07-14 20:46:51