使用asp MVC中的LINQ / Lambda基于类别首选项对查询进行排序

时间:2014-06-02 00:36:43

标签: c# asp.net-mvc linq

场景是:

我有一个产品列表,可以分为几类。这是产品型号

public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int CategoryId { get; set; }

        public virtual Category Category { get; set; }
    }

这是类别模型

public class Category
    {
        public int Id { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Product> Products { get; set; }
    }

虚拟数据:

类: 一个 乙 C d

我想要的是什么:

我想列出所有产品,但属于 C类别的产品列在列表顶部,其余部分列在原样列表的底部。

这对此有什么影响?感谢

2 个答案:

答案 0 :(得分:1)

我亲自这样做......

var preferredCategory = "CategoryC";
var result = Products.OrderBy(x => x.Category.Name == preferredCategory ? 0 : 1).
                      ThenBy(x => <Your previous ordering>);

答案 1 :(得分:0)

快速执行此操作的方法是使用具有任意值的OrderBy

var products = Enumerable.Empty<Product>();

var sorted1 = products.OrderByDescending(p => p.Category.Name == "C");
var sorted2 = from p in products
              orderby p.Category.Name == "C" descending
              select p;