【发布时间】:2023-03-26 22:56:01
【问题描述】:
我有以下简化设置:
Public User
{
//Primary key
public int Id {get;set;}
public string Name {get; set;}
}
Public UserInfo
{
//Primary key
public int Id {get;set;}
//Foreign key to user table
public int userKey {get; set;}
}
表之间的关系是一个用户到多个用户信息
我正在尝试从user 表中进行选择并包含userInfo 表。
我不能这样做:
var users = Context.user.Include(u => u.userInfos);
因为用户表中没有对UserInfo 表的引用。
我可以这样做:
context.userInfo.include(x => x.user)
但是如果userInfo表中没有对应的条目,这将不会返回任何结果,这不是我想要的。此外,这将为每个 userInfo 返回一行,而我希望为用户提供一行,并将 userInfo 列表作为参数。
同样,我可以像这样加入表格:
var users = from us in Context.user
join inf in Context.userInfo
on us.Id equals inf.userKey
select new //etc
但这也会为每个 userInfo 条目返回一行,与上面的问题相同。
总而言之,有没有一种方法可以包含此表以产生与 include 函数相同的结果。
我知道我可以调整我的设置以包含这个,但这不是我在这里要求的。
我怀疑这无法做到,但到目前为止,从我所有的谷歌搜索来看,我都无法找到明确的答案......
【问题讨论】:
-
我猜
User有一个属性UserInfos或类似的东西? (顺便说一句,帮自己一个大忙,并遵守命名约定,例如以大写开头的类和属性名称)。 -
所以您正在寻找 linq 中的左连接?这是一个解决方案stackoverflow.com/questions/3404975/left-outer-join-in-linq
标签: c# linq include linq-to-entities entity