【发布时间】:2014-04-16 14:10:23
【问题描述】:
我有以下代码:
public SiteViewModel SVMGetByID(int siteID)
{
SiteViewModel siteViewModel = (
from site in context.Sites
join address in context.Addresses on site.AddressID equals address.AddressID
//join city in context.Cities on address.CityID equals city.CityID
join country in context.Countries on address.CountryID equals country.CountryID // This needs to be a left join I think?
join state in context.States on address.StateID equals state.StateID // This needs to be a left join I think?
where site.SiteID == siteID
select new SiteViewModel
{
SiteID = site.SiteID,
Name = site.Name,
AddressID = address.AddressID,
Address1 = address.Address1,
Address2 = address.Address2,
City = address.City,
State = state,
StateID = state.StateID,
Country = country,
CountryID = country.CountryID,
ZIP = address.ZIP
}
).FirstOrDefault();
// If address.CityID and address.StateID have a value the siteViewModel is correctly filled,
// otherwise it is not.
return siteViewModel;
}
如果在我的数据库中,我的地址表包含 address.CityID 或 address.StateID 的空条目,它返回一个空结果...我实际上希望它返回一个结果,无论连接是否失败(左加入?)。
这两列用“允许空值”打勾...我的地址模型也表示Nullable<int>... 连接词应该是别的吗?
【问题讨论】:
-
“无法继续”是什么意思?会发生什么?
-
我想我正在寻找如何在 linq 中进行左连接... OP 已修改
标签: c# linq entity-framework join