1

コンパイルエラー:「名前'b'は現在のコンテキストに存在しません」

コード:

    List<PositionValues> list = new List<PositionValues>();
    PositionValues item1 = new PositionValues();
    item1.Position = 2;
    item1.Value = 44;
    list.Add(item1);

    PositionValues item2 = new PositionValues();
    item2.Position = 1;
    item2.Value = 33;
    list.Add(item2);


    PositionValues item3 = new PositionValues();
    item3.Position = 1;
    item3.Value = 22;
    list.Add(item3);


    var resultList = from b in list 
                     group b by b.Position into g 
                     orderby b.Value select b;

上記のコードは、この構造体に依存しています。

public struct PositionValues
{
    /// <summary>
    /// The position.
    /// </summary>
    public int Position;

    /// <summary>
    /// The position.
    /// </summary>
    public double Value;
}

次の並べ替え順序を取得したいと思っています。

resultList[0] {1, 22}
resultList[1] {1, 33}
resultList[2] {2, 44}

括弧内は「Position」、2番目は「Value」です。

4

3 に答える 3

3

投稿した予想結果に基づいて、を使用する必要はありませんgroup by

あなたが望むのは、次のようなものです:

var result = list.OrderBy(x => x.Position).ThenBy(x => x.Value);
于 2013-01-21T17:33:33.167 に答える
1

または、クエリ スタイルが必要な場合は、

var query =
    from b in list
    orderby b.Position, b.Value
    select b;
于 2013-01-21T17:37:20.570 に答える
0

bをグループに使用したgので、次は を使用しますg。また、g にグループ化する前に b で順序付けする必要があります。

var resultList = from b in list orderby b.Value group b by b.Position into g select g;
于 2013-01-21T17:32:47.503 に答える