Ошибка Linq "Не удалось найти реализацию шаблона запроса для типа источника 'System.Linq.IQueryable' Join Not Found ' - PullRequest
2 голосов
/ 15 июля 2009

Что, черт возьми, это значит? Игнорировать возврат и получение. Результаты будут сглажены и застрянут в приложении mem (так что это будет набор ... вероятно)

"Не удалось найти реализацию шаблона запроса для типа источника 'System.Linq.IQueryable'. 'Соединение' не найдено. Рассмотрим явное указание типа переменной диапазона '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 Ответ

3 голосов
/ 15 июля 2009

Array - очень свободный тип, он не реализует IEnumerable<T> и т. Д. Вы можете попробовать просто переключить строки Array на var (пусть компилятор выберет тип). Если он все еще использует Array, то, возможно, используйте .Cast<T>() для указания типа (или Array.ConvertAll и т. Д.).

С Array (без дополнительной информации) все, что он знает, это object.

По сути, Join определяется (как метод расширения) для IEnumerable<T> и IQueryable<T> - не IEnumerable (без <T>).

...