1

我有 2 张桌子:用户 - 汽车:

**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")

有人可以帮助我。谢谢你。

4

1 回答 1

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")
                    };

请忽略 Typo 错误。我不在我的笔记本电脑上。我希望你有一个想法

于 2013-07-24T17:45:50.737 回答