0

タイプ「OrganisationUnit」のオブジェクトのコレクションがあります

   Id   Index
    A   1
    B   2
    C   3
    D   4
    E   5
    F   6
    G   7

ID FはID Bの前に移動されます

別のレイヤーから渡された利用可能な追加の OrganizationUnit オブジェクトとして、ID の F と B の両方があります。

今、何が起きた:

Id FはId Bインデックスを取得します。Id Bとそれに続くすべての Idは、Index を 1 ずつインクリメントする必要があります

結果は次のようになります。

Id  Index
A   1
F   2
B   3
C   4
D   5
E   6
G   7

2 つのオブジェクトをコレクション (既にこれらの 2 つのオブジェクトを含む) にマージし、LINQ で index プロパティを使用して更新するにはどうすればよいでしょうか?

4

1 に答える 1

1

少しの Linq と単純なループ:

var f = units.First(u => u.ID == "F");
int newFIndex = 2;
var updateUnits = units
    .Where(u => u.Index >= newFIndex && u.Index < f.Index)
    .ToList();
foreach (OrganisationUnit u in updateUnits)
    u.Index++;
f.Index = newFIndex;

デモ

于 2012-12-04T09:52:27.837 に答える