5

MVC2 アプリケーションに Linq-SQL Entity を使用しています。

私はそれらのテーブル/エンティティを持っています

Person ( ID , Name , Surname ) Car (ID , Model , Name) Reseller ( ID , Name )

そして、私はそれらの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 回受け取ります。

Mr Brown has 2 Cars i Recie Mr Brown ---> 車のリスト(Car1 , Car2) Mr Brown ---> 車のリスト(Car1, Car2)

したがって、人が2台の車を持っている場合、自分の車を持っている人の結果は1つだけになる必要があります

このクエリをより適切に記述する方法はありますか? どうすれば問題を解決できますか?

ありがとう

4

2 に答える 2