我和朋友在LINQ上遇到了一些麻烦
我们正在尝试显示一个邮政编码,其中国家名称是通过邮政编码表中的外键找到的。
我们的LINQ调用如下
var Zipcodes = from p in db.Zipcodes
join i in db.ISOes on p.Iso_id equals i.ID
select new { Zip = p.Zip, name = p.Name, Address = p.Address, Country = i.Country };
return View(Zipcodes.ToList());
我们能够显示Zipcode表,外键显示自己的值,但尝试使用此值来显示国家名称(可在ISOes表中找到)
我们得到的值不能为null错误(paraname = outer)
LINQ对我们来说是一项新技术,因此非常感谢任何帮助。
提前致谢!
OBS:
我们重新编写了一些代码,并坚持我们认为是一个不同的问题。我们打算发一个关于此的新帖子。对不起浪费时间,虽然我们学到了很多:)
答案 0 :(得分:2)
我遇到了将文件解析为类并查询这些通用列表的相同错误。事实证明我的一个列表是空的(null)。一旦纠正,一切都很好。我怀疑原始海报的问题在于连接表中没有数据。
答案 1 :(得分:1)
你不能只选择
var zipcodes = from p in db.Zipcodes
select new { Zip = p.zip, ..., country = p.ISOs.Country}
如果你的FK结构没问题,那应该有用
答案 2 :(得分:0)
var Zipcodes = from p in db.Zipcodes
join i in db.ISOes on p.Iso_id equals i.ID
into ISOs
from iso in ISOs.DefaultIfEmpty()
select new { Zip = p.Zip, name = p.Name, Address = p.Address, Country = iso == null ? string.Empty : iso.Country };
return View(Zipcodes.ToList());