我正在为我的 MVC2 应用程序使用 Linq-SQL 实体。
我有那些表/实体
人(ID、姓名、姓氏)汽车(ID、型号、姓名)经销商(ID、姓名)
我有那些 2 多对多表
Persons_Cars (ID, ID_Person, ID_CAR) Persons_Resellers (ID, ID_Person, ID_Reseller)
public MyModel {
//Some Fields
public List<CarPerson> carList;
public CarPerson
{
String detail;
int id;
}
}
var query=(from person in data.Person
join PerCar in data.Persons_Cars on person.ID equals Persons_Cars.ID_Person into JoinedPerCar
from PerCar in JoinedPerCar.DefaultIfEmpty()
join car in data.car on PerCar .id_car equals car.ID into JoinedCarPe
rson
from car in JoinedCarPerson.DefaultIfEmpty()
join PerReseller in data.Persons_Resellers on person.ID equals PerReseller .id_person into JoinedPersReseller
from PerReseller in JoinedPersReseller.DefaultIfEmpty()
join Reseller in data.Reseller on PerReseller.id_reseller equals Reseller.ID into JoinedResellerPers
from Resller in JoinedFormazioneComp.DefaultIfEmpty()
where person.ID_USER == USER.ID
select new MyModel
{
carList = JoinedPerCar.Select(m=>new CarPerson {detail=m.car.Model,id = m.ID}).ToList()},
//Other
});
我知道这是完全错误的,但我是 Linq-SQL 的新手,我现在有一个问题:
查询有效,但我的结果是错误的。事实上,如果一个人有 2 辆汽车,我会用 2 辆汽车清单两次接收同一个人。
例子
布朗先生有 2 辆车我收到了布朗先生 ---> 汽车列表(Car1,Car2)布朗先生 ---> 汽车列表(Car1,Car2)
所以我需要,如果一个人有 2 辆车,我只得到 1 个有自己车的人的结果
有没有办法更好地编写这个查询?如何解决我的问题?
谢谢