无法将类型“System.Linq.IQueryable”隐式转换为“int”?'varcityList=fromcountryindoc.Element("result").Element("cities").Descendants("city")selectnew{Name=country.Element("name").Value,Code=country.Element("code").Value,CountryCode=int.Parse(country.Element("countrycode").Value)};foreach(varciteeincityList){城市city=newCity();city.CountryID=来自db.Countries中的cntwherecnt.DOTWInternalID==citee.CountryCodeselectcnt.ID;如本文标题所示,我在第二个查询中收到错误。我尝试将int转换为可为空的int,但没有任何效果。帮帮我,伙计们。谢谢它返回一个iQueryable,你需要做一些事情,比如使用Firstcit.CountryID=db.Countries.First(a=>a.DOTWInternalID==citee.CountryCode).ID自上次更新帖子以来已经有很长时间了,但我认为值得改进解决方案。在我看来,为这个特定场景发布的解决方案并不是获取所需ID的最佳方式。更好的解决方案如下。db.Countries.Where(a=>a.DOTWInternalID==citee.CountryCode).Select(a=>a.ID).FirstOrDefault();前面的语句基本上运行类似于以下的SQL查询:SELECTTOP(1)IDFROM[dbo].[Countries]WHEREDOTWInternalID=123建议的解决方案可行,但基本上执行“SELECT*”以创建具有所有值的实体,然后从刚刚创建的对象中获取ID。您可以使用Linqpad实际查看生成的SQL并调整LINQ查询或Lambda。希望它能帮助其他一些人来到这篇文章。这是来自cntindb.Countries的问题和解决方案,其中cnt.DOTWInternalID==citee.CountryCode选择cnt.ID部分。如果省略ID,则返回带有Country的GenericIEnumerable(希望您有一个Country类)。所以您所要做的就是首先返回到选择标准,然后选择第一行,然后是ID字段。也如下图所示。cit.CountryID=(fromcntindb.Countrieswherecnt.DOTWInternalID==citee.CountryCodeselectcnt).First().ID;这将解决您的问题。IQueryable不是单个int-而是可以表示集合的查询。如错误消息所示,您的Linq查询返回一个System.Linq.IQueryable(出于所有意图和目的,一个整数数组)。如果你想获得其中之一,你可以调用First或ElementAt(n)来获得第n个元素。以上是C#学习教程:Cannotimplicitlyconverttype'System.Linq.IQueryable'to'int?'分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——cit.CountryID=db.Countries.First(a=>a.DOTWInternalID==citee。国家代码)。ID本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
