1

我有一堂课:

public class LevelInfo
    {
        public int Id { get; set; }
        public string HexColor { get; set; }
        public string Caption { get; set; }
        public int MinPrice { get; set; }
    }

我有一个集合LevelInfo。例如,我们有以下数据:

Id     HexColor     Caption     MinPrice
1       color1       name1         10
2       color2       name2         20
3       color2       name3         10
4       color3       name4         10

我想LevelInfo通过 HexColor 获得新的分组集合(不完全是,不知道怎么说)。对于上面的数据,我想获得以下包含 3 条记录的集合:

Id     HexColor     Caption     MinPrice
1       color1       name1         10
3       color2       name3         10
4       color3       name3         10

我们没有选择Id等于 2 的记录,因为我们有color1Id=1)并且它的价格最低。我怎样才能做到这一点?谢谢。

4

1 回答 1

4

所以听起来你想分组,按 MinPrice组内排序,然后从每个组中选择第一个元素,对吗?如果这是正确的,你想要:

var query = from level in levels
            group level by level.HexColor into levels
            select levels.OrderBy(level => level.MinPrice).First();

或者,如果您使用MoreLINQ,您可以避免进行完整的排序MinPrice只需选择最低价格的值:

var query = from level in levels
            group level by level.HexColor into levels
            select levels.MinBy(level => level.MinPrice);
于 2012-06-24T07:19:50.880 回答