使用LINQ查找所有元素的不同类别

时间:2014-03-25 10:49:47

标签: c# linq

我有两个数据类:

public class Category
{
    public string Title { get; set; }
    public int OrderNo { get; set; }
}

public class Element
{
    public string Prop1 { get; set; }
    // ...
    public string PropN { get; set; }

    public Category Category { get; set; }
}

鉴于Element - 对象的枚举,我需要Category Title的明确枚举 - OrderNo排序的字符串。

如果我有一个Category - 对象的枚举,这将是:

var catTitles = categories.OrderBy(cat => cat.OrderNo).Select(cat => cat.Title).Distinct();

但是我只有一个Element - 枚举的枚举,它引用了它们的Category - 对象......有没有一种简单的方法可以通过LINQ提取它们?

3 个答案:

答案 0 :(得分:2)

几乎相同,您需要选择Category

var query = elements
    .OrderBy(el => el.Category.OrderNo)
    .Select(el => el.Category.Title)
    .Distinct();

如果类别可以是null

var query = elements
    .OrderBy(el => el.Category == null ? int.MaxValue : el.Category.OrderNo)
    .Select(el => el.Category == null ? null : el.Category.Title)
    .Distinct();

答案 1 :(得分:1)

elementList.Select(x => x.Category)
           .OrderBy(x => x.OrderNo)
           .Select(x => x.Title)
           .Distinct();

答案 2 :(得分:0)

var Result = categories.GroupBy(p=> p.Category).Select(group => group.OrderByDescending(d=> d.OrderNo)).ToList();