双连接返回重复的结果

时间:2014-12-16 16:23:57

标签: c# linq join inner-join

这是我的疑问:

categories = (from category in db.Cat
              join map in db.Map on category.id equals map.categoryid
              select new CategoryModel
              {
                  Id = category.category_id,
                  Order = Map.order
               }).ToList();

现在我想添加另一个,加入,列出所有实际拥有项目的类别:

categories = (from category in db.Cat
              join map in db.Map on category.id equals map.categoryid
              join items in db.Itm on map.id equals items.category_Id
              select new CategoryModel
              {
                  Id = category.category_id,
                  Order = Map.order
               }).ToList();

第一个查询返回10个类别。第二个查询应该返回9,因为其中一个类别没有与之关系的项目。但是,第二个查询返回大约100个类别。我理解为什么会这样 - 这是因为每个第一次加入都有大约10个项目,它给了我10个类别* 10个项目。

但是我只想获得9个类别。我该怎么办?

1 个答案:

答案 0 :(得分:1)

只需使用Distinct

即可
categories = (from category in db.Cat
              join map in db.Map on category.id equals map.categoryid
              join items in db.Itm on map.id equals items.category_Id
              select new CategoryModel
              {
                  Id = category.category_id,
                  Order = map.order
               }).Distinct().ToList();