无法将类型'System.Linq.IQueryable <int>'隐式转换为'int?'</int>

时间:2010-04-04 17:26:51

标签: c# 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;
}

我在第二个查询中收到错误,如本文标题所示。我尝试转换为intnullable int,但没有任何效果。帮助我,伙计们。

由于

6 个答案:

答案 0 :(得分:42)

它会返回一个iQueryable,你需要做一些像使用First

的东西
cit.CountryID = db.Countries.First(a=>a.DOTWInternalID == citee.CountryCode).ID

答案 1 :(得分:9)

自上次更新帖子以来已经过了很长时间,但我认为值得改进解决方案。

在我看来,针对此特定方案发布的解决方案并不是获得所需ID的最佳方式。更好的解决方案如下。

db.Countries.Where(a=>a.DOTWInternalID == citee.CountryCode)
            .Select(a => a.ID).FirstOrDefault();

以前的statemants基本上运行类似于下面的SQL查询:

SELECT TOP (1) ID
FROM [dbo].[Countries]
WHERE DOTWInternalID = 123

建议的解决方案有效,但基本上用"SELECT *"来创建包含所有值的实体,然后从刚刚创建的对象中获取ID。

您可以使用 Linqpad 实际查看生成的SQL并调整LINQ查询或Lambdas。

希望对其他人有所帮助。

答案 2 :(得分:6)

这是问题和解决方案

来自db.Countries中的cnt,其中cnt.DOTWInternalID == citee.CountryCode选择cnt.ID 部分。如果省略ID,则返回带有Country的Generic IEnumerable(希望您有Country类)。所以你要做的就是首先返回选择标准,然后选择第一行,然后选择ID字段。同样如下所示。

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

这将解决您的问题。

答案 3 :(得分:5)

IQueryable不是单个int - 而是可以表示集合的查询。

答案 4 :(得分:2)

正如错误消息所示,您的Linq查询返回System.Linq.IQueryable(所有意图和目的都是一组int)。如果你想获得其中一个,你可以拨打FirstElementAt(n)来获取第n个元素。

答案 5 :(得分:0)

TABLE       INDEX               UPDATED             ROWS    ROWS__SAMPLED   STEPS   DENSITY         AV_KEY_LEN  RECOMPUTE   STALE
Events      PK_Events           18.08.2015 7:45:08  1876754 1876754         5       5,328349E-07    4           True        False
Files       PK_Files            09.08.2015 18:15:00 411589  411589          3       2,429608E-06    4           True        False
Revisions   PK_Revisions        07.07.2015 8:10:05  376296  376296          5       2,657482E-06    4           True        False
Revisions   UQ_Revisions_Guid   07.07.2015 8:10:50  376296  376296          200     2,657482E-06    16          True        False
...