Не может неявно преобразовать тип 'Система. Linq. IQueryable <интервал>' к 'интервалу?'

var cityList = from country in 
                    doc.Element("result")
                    .Element("cities")
                    .Descendants("city")
select new {
        Name = country.Element("name").Value,
        Code = country.Element("code").Value,
        CountryCode = int.Parse(country
                      .Element("countrycode")
                      .Value)
    };

foreach(var citee in cityList)
{
    City city = new City();
    city.CountryID = from cnt in db.Countries 
                     where cnt.DOTWInternalID == citee.CountryCode 
                     select cnt.ID;
}

Я получаю ошибку на втором запросе, как замечено в заголовке этого сообщения. Я пытался преобразовать в int кому: nullable int но ничто не работало. Помогите мне, парням.

Спасибо

31
задан Lewis86 5 January 2018 в 13:18
поделиться

4 ответа

он вернется iQueryable, вам нужно будет сделать что-то вроде использования First

cit.CountryID = db.Countries.First(a=>a.DOTWInternalID == citee.CountryCode).ID
45
ответ дан 27 November 2019 в 21:56
поделиться

IQueryable - это не один int, а запрос, который может представлять коллекцию.

5
ответ дан 27 November 2019 в 21:56
поделиться

Как говорится в сообщении об ошибке, ваш запрос Linq возвращает System.Linq.IQueryable (для всех намерений и целей набор целых чисел). Если вы хотите получить один из них, вы можете вызвать First или ElementAt (n) , чтобы получить n-й элемент.

2
ответ дан 27 November 2019 в 21:56
поделиться

Вот проблема и решение

из cnt в db.Countries, где cnt.DOTWInternalID == citee.CountryCode select cnt.ID part . Если вы опустите идентификатор, он вернет общий IEnumerable с Country (в надежде, что у вас есть класс Country). Итак, что вам нужно сделать, это сначала вернуть критерии выбора и выбрать первую строку, а затем поле идентификатора. То же, что показано ниже.

cit.CountryID = (from cnt in db.Countries where cnt.DOTWInternalID == citee.CountryCode   select cnt).First<Country>().ID;

Это решит вашу проблему.

6
ответ дан 27 November 2019 в 21:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: