在LINQ中遇到内连接问题

时间:2011-03-11 21:13:16

标签: c# linq

我和朋友在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:

我们重新编写了一些代码,并坚持我们认为是一个不同的问题。我们打算发一个关于此的新帖子。对不起浪费时间,虽然我们学到了很多:)

3 个答案:

答案 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());