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

LevelInfoHexColorによってグループ化された(正確には、正しく言う方法がわからない)新しいコレクションを取得したいと思います。上記のデータについて、3つのレコードを含む次のコレクションを取得したいと思います。

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

(= 1)があり、最低価格がIdあるため、2に等しいレコードは選択しません。これどうやってするの?ありがとう。color1Id

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 に答える