复杂的orderby链接到另一个表

Tud*_*ean 2 linq linq-to-objects linq-to-entities linq-to-sql

我有以下查询开头:

var query = from p in db.Products
                        from pc in p.NpProductCategories
                        where pc.CategoryId == categoryId 
                        select p;
Run Code Online (Sandbox Code Playgroud)

我正在对它应用更多的过滤,最后我想对结果进行排序:

if (orderBy == ProductSortingEnum.Name)
                    query = query.OrderBy(x => x.Name);
                else
                    query = query.OrderBy(............);
Run Code Online (Sandbox Code Playgroud)

我的大问题(来自不知道linq太好了)就是这里的ELSE.如何按不在当前结果集中的列对结果进行排序?我想以某种方式链接到orderby中的另一个linq查询.我试图实现的排序是使用ProductId链接到NpProductVariants查询以匹配NpProductVariant和Products,并按NpProductVariant的价格排序

Amy*_*y B 9

假设您在dbml中设置了关系...

一对一(以及多对一):

query = query.OrderBy(p => p.NpProductVariant.Price);
Run Code Online (Sandbox Code Playgroud)

一对多:

query = query.OrderBy(p => p.NpProductVariants.Select(v => v.Price).Max());
Run Code Online (Sandbox Code Playgroud)

也:

var query =
  from p in db.Products 
  where p.NpProductCategories.Any(pc => pc.CategoryId == categoryId)
  select p;
Run Code Online (Sandbox Code Playgroud)