LINQ:两个单独的查询在一个不同的结果中

LINQ : two separate queries in a single distinct result

自从我使用 LINQ 以来已经有一段时间了,我一直在绞尽脑汁解决一些我希望更简单的事情...

我有一个带有上面模式(简化)的数据库,我想合并两个查询的结果,所以我会使用 LINQ (to Entities) 得到如下结果:

SUV     
  Gas   
  Diesel    
  Hybrid    
  Hydrogen  
  Biofuel 
  1 
  2

Semi
  Gas
  Diesel
  1
  3
  4

因此,一个类别列表(由 CatTitles 标识)及其不同的类型(按指定顺序)及其不同的品牌 ID。

我无法使用导航属性,因为 link 表包含排序。

我有以下两个查询:

var typesPerCat = (from cats in CarCategories
                join ctts in CategoryTypes on cats.CatID equals ctts.CatID
                join tps in Types on ctts.TypeID equals tps.TypeID
                select new
                {
                  cats.CatTitle,
                  tps.TypeName
                }).GroupBy(k=>k.CatTitle)

var brandIDsPerCat = (from cats in CarCategories
                join ctts in CategoryTypes on cats.CatID equals ctts.CatID
                join tps in Types on ctts.TypeID equals tps.TypeID
                join tpbs in TypeBrands on tps.TypeID equals tpbs.TypeID
                select new
                {
                  cats.CatTitle,
                  tpbs.BrandID
                }).GroupBy(k=> new {k.CatTitle, k.BrandID}) 

最后一个查询导致重复条目:例如1,2,2 和 1,3,3,3,4,4(每个类型和每个类别的类型有多个 BrandID),如果没有比较器,我不知道如何正确分组。

我想获得上述结果,而不必诉诸(非常)丑陋的代码比较迭代。至少防止检查双重 BrandID。

最有效的方法是什么? 感谢您的帮助!

我会先分组,然后在分组值中应用不同。

var brandIDsPerCat = (from cats in CarCategories
                join ctts in CategoryTypes on cats.CatID equals ctts.CatID
                join tps in Types on ctts.TypeID equals tps.TypeID
                join tpbs in TypeBrands on tps.TypeID equals tpbs.TypeID
                group new {cats, tpbs} by cats.CatTitle into g
                select new
                {
                  catTitle = g.Key
                  brandId = g.Select(x => x.tpbs.BrandId)
                             .Distinct()
                             .OrderBy(x => x)//if you need ordering in groups
                }