我是Entity Framework的新手。请帮我解决以下问题。
我有2个表,用户和公司,我需要在Users表上进行正确的外连接。
这就是我现在所拥有的。
List<Company> users = DbContext.Companies
.Where(p => !p.User.IsDeleted)
.Include(p=> p.User)
.OrderBy(p => p.User.FirstName)
.ToList();
请帮帮我。 TIA。
关系是User.id = Company.Companyid
样本数据
Name Role Userid Companyid
Test1 Test1 User 210 210
Test2 Test2 User 1034 1034
Test3 Test3 Company Admin 2594 2594
Test4 Test4 Company Admin 5139 5139
预期结果
Name Role Userid Companyid
Test1 Test1 User 210 210
Test2 Test2 User 1034 1034
Test3 Test3 Company Admin 2594 2594
Test4 Test4 Company Admin 5139 5139
Test5 Test5 Super Admin 1 Null
答案 0 :(得分:1)
这是我的解决方法:
var usercompany = from u in dbcontext.User
join c in DbContext.Companies.Include(c=>c.User)
on u.id equals c.id into cu
from co in cu.DefaultIfEmpty()
select new
{
u.id,
co.id
};
var result= usercompany.ToList()
答案 1 :(得分:0)
您可以像
一样查询List<User> users = DbContext.Users.Include(p => p.Company).Where(p => !p.IsDeleted).ToList();
它将加载用户和公司。如果用户被映射到任何公司,EF也将加载公司。如果用户未映射到任何公司,则公司属性将保持为空。
答案 2 :(得分:-1)
如果我没有理解你的错误,那就在下面:
List<Company> users = DbContext.Companies
.Include(p=> p.User)
.Where(p => !p.User.IsDeleted && p.User.CompanyId == p.CompnayId)
.OrderBy(p => p.User.FirstName)
.ToList();
OR
List<User> users = DbContext.Users.Include(p => p.Company).Where(p => !p.IsDeleted && p.CompanyId == p.Company.CompanyId).ToList();