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

2

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

"Не удалось найти реализацию шаблона запроса для типа источника" 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()

Теги:
asp.net-mvc
c#-3.0
.net-3.5

1 ответ

3
Лучший ответ

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

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

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

  • 0
    a.RegionID и r.Id введите int r.CountryCode и c.Key введите строку
  • 0
    должен был RegionId не RegionID Да, и изменил массивы на Var; о) Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню