我有2个表:user - car:
**User table: ID - Name**
ID:1 Name:Iam
ID:2 Name:Louis
**Car table: ID - Car**
ID:2 Car:BMW
ID:2 Car:Ford
ID:2 Car:Strange
我想制作一个查询,向我显示所有用户(有或没有汽车)和他们的汽车。我正在使用LINQ to DataSet。
我的查询是:
var query =
from user in ObjDT_Usuario.AsEnumerable()
join car in ObjDT_Vehiculos.AsEnumerable()
on user.Field<string>("ID") equals car.Field<string>("ID")
orderby user.Field<string>(campo)
select new UserReport
{
Name = user.Field<string>("Name"),
Car = car.Field<string>("Car")
};
此查询是正确的,但仅显示有车的用户:on user.Field<string>("ID") equals car.Field<string>("ID")
有人可以帮助我。谢谢。
答案 0 :(得分:2)
这是因为您正在应用 EquiJoin 。您需要 LeftJoin
from user in ObjDT_Usuario.AsEnumerable()
join car in ObjDT_Vehiculos.AsEnumerable()
on user.Field<string>("ID") equals car.Field<string>("ID") into userxs
from u in userxs.DefaultIfEmpty(
orderby u .Field<string>(campo)
select new UserReport
{
Name = user.Field<string>("Name"),
Car = u.Field<string>("Car")
};
请忽略错字错误。我不在我的笔记本电脑上。我希望你有个主意