1

ジェネリック リスト アイテムのインデックス プロパティを更新する方法を探しています。

たとえば、私はクラスを持っています:

public class ItemInfo
{
        public int SRNO { get; set }

        public Name{ get; set }
}

今、私はList<ItemInfo> myListアイテムの数を持っています。

各アイテムの ItemInfo.SRNO を増分値で更新したい

リストアイテムに10個のアイテムがある場合のように、「SRNO」は次のように更新する必要があります

1
2
.
.
.
10
4

2 に答える 2

3

実際には、次のようなLINQは必要ありません。

infoList.Select((info, i) => { info.SRNO = i + 1; return info });

また

Enumerable.Range(0, infoList.Count).Select(i =>
    {
        var info = infoList[i];
        info.SRNO = i+1;
        return info;
    });

単純なforループを使用します。

for (int i = 0; i < infoList.Count; i++)
{
    info[i].SRNO = i + 1;
}
于 2012-05-25T09:44:12.720 に答える
1

あなたはそれをしなければならないでしょう。LINQは(設計上)副作用をサポートしていないため、forループなどの命令型構造を使用してリストを反復処理する必要があります。

for(var i = 0;i<infoList.Count;){
    infoList[i].SRNO = ++i;
}

linqメソッドの意図のかなりの数に違反して、設計されていないことを実行させることができます。たとえば、プロジェクトまたは選択がデータを操作する場所があります(少なくとも参照を介して。しかし、それらはそのために設計されたものではなく、結果のコードは通常目障りです。

特定のケースでニーズに合った構成を使用して、副作用を作成することを目的としたものを使用してください。

于 2012-05-25T09:46:04.773 に答える