Linq错误“无法找到源类型的查询模式的实现'System.Linq.IQueryable'Join Not Found'

时间:2009-07-14 20:19:41

标签: c# asp.net-mvc .net-3.5 c#-3.0

这到底意味着什么?忽略返回,获取,结果将被压平并卡在应用程序内存中(因此这将是一个集合......可能)

“无法找到源类型'System.Linq.IQueryable'的查询模式的实现。'未找到'Join'。请考虑明确指定范围变量'a'的类型。”

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()

1 个答案:

答案 0 :(得分:3)

Array是一种非常宽松的类型,并没有实现IEnumerable<T>等。您可以尝试将Array行切换为var(让编译器选择类型)。如果它仍然使用Array,则可能使用.Cast<T>()来指定类型(或Array.ConvertAll等)。

Array(没有更多信息),它所知道的只是object

基本上,JoinIEnumerable<T>IQueryable<T>上定义(作为扩展方法) - 而不是IEnumerable(没有<T>)。