Linq to sql Отличное после присоединения

1

У меня есть запрос на соединение, и я хочу отфильтровать результат этого запроса, используя различные. Я хочу получить только одну из обуви, которая имеет тот же бренд, модель, основной цвет и вторичный цвет. Как я могу это сделать? Вот мой запрос на соединение.

var query = from b in db.BrandTbls.AsQueryable()
            join m in db.ShoeModelTbls on b.BrandID equals m.BrandID
            join s in db.ShoeTbls on m.ModelID equals s.ModelID
            join i in db.ShoeImageTbls on s.ShoeID equals i.ShoeID
            where s.Quantity > 0
            orderby m.ModelName
            select new 
            { 
                s.ShoeID, 
                m.ModelName, 
                m.Price, 
                b.BrandName, 
                i.ImagePath
            };
Теги:
sql-server
linq

2 ответа

2

Я нашел решение. Этот запрос делает примерно то, что я хочу сделать

            var query = from b in db.BrandTbls.AsQueryable()
                    join m in db.ShoeModelTbls on b.BrandID equals m.BrandID
                    join s in db.ShoeTbls on m.ModelID equals s.ModelID
                    join i in db.ShoeImageTbls on s.ShoeID equals i.ShoeID
                    group new {b,m,s,i} by new {b.BrandName,m.ModelName,m.Price,s.ShoeID,s.PrimaryColor,s.SecondaryColor,i.ImagePath} into g
                    select new {g.Key.ShoeID,g.Key.BrandName,g.Key.ModelName,g.Key.ImagePath,g.Key.Price};
0

Удалите цену с выхода и используйте Distinct() следующим образом:

var query = (from b in db.BrandTbls.AsQueryable()
            join m in db.ShoeModelTbls on b.BrandID equals m.BrandID
            join s in db.ShoeTbls on m.ModelID equals s.ModelID
            join i in db.ShoeImageTbls on s.ShoeID equals i.ShoeID
            where s.Quantity > 0
            orderby m.ModelName
            select new 
            { 
                s.ShoeID, 
                m.ModelName, 
                b.BrandName, 
                i.ImagePath
            }).Distinct();
  • 1
    Просто примечание: у вас все еще есть ShoeID там. Distinct не будет работать, если у каждой обуви есть свой собственный идентификатор.
  • 0
    @ gunr2171 Действительно, ОП также запрашивает основной цвет и вторичный цвет, который не включен в вопрос.
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню