Ошибка LINQ: метод не распознан - PullRequest
1 голос
/ 02 сентября 2011

Я использую следующий код, который компилируется без проблем, но я получаю эту ошибку при вызове метода:

LINQ to Entities не распознает метод метода System.String ToString (), и этот метод нельзя преобразовать в выражение хранилища.

public IEnumerable<string> GetAllCitiesOfCountry(int id)
    {
        var ad = from a in entities.Addresses
                 where a.CountryID == id
                 select a.City.Distinct().ToString();
        var fa = from b in entities.FacilityAddresses
                 where b.CountryID == id
                 select b.City.Distinct().ToString();
        return ad.Concat(fa).Distinct();
    }

Как это можно переписать для работы?

Ответы [ 2 ]

4 голосов
/ 02 сентября 2011

Обновление - я думаю, это то, что вы ищете

public IEnumerable<string> GetAllCitiesOfCountry(int id)
    {
        var ad = from a in entities.Addresses
                 where a.CountryID == id
                 select a.City;
        var fa = from b in entities.FacilityAddresses
                 where b.CountryID == id
                 select b.City;
        return ad.Union(fa).Distinct();
    }
3 голосов
/ 02 сентября 2011

Какой тип City? Если это уже строка, просто отбросьте вызовы .Distinct().ToString(). Если это сложный тип, выберите название города из этого типа.

Обновление : на основании вашего комментария вы должны отбросить вызовы Distint () и ToString (). Последний союз над коллекциями названий городов должен дать вам уникальные названия городов.

public IEnumerable<string> GetAllCitiesOfCountry(int id) 
{ 
    var ad = from a in entities.Addresses 
             where a.CountryID == id 
             select a.City;
    var fa = from b in entities.FacilityAddresses 
             where b.CountryID == id 
             select b.City;
    return ad.Union(fa);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...