2012-12-04 136 views
0

更新某些性質我有型的「OrganisationUnit」合併重複的對象的集合,並與LINQ

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

標識˚F對象的集合之前ID B

我有移動兩個Id的F和B作爲額外的OrganisationUnit對象可用從另一個層傳遞。

現在會發生什麼:

標識˚F得到指數ID B
ID B和所有以下Id`s有1

來增加他們的指數結果應該是這樣的:

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

你會怎麼做合併與2個對象集合(包含那些2個對象)並使用LINQ的索引屬性進行更新?

+0

與一對夫婦的條件語句和循環。 – Jon

回答

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; 

Demo

+0

argh ...對不起,我忘記了一些東西......第一件事是你.index = newFIndex,這意味着單位f及其索引也會在updateUnits中遞增1,直到3.這不正確。 – Elisabeth

+0

@Elisa:你看過演示了嗎?這正是你想要的結果,不是嗎?爲什麼「f-unit」之後的單位應該增加?它們不受交換操作的影響,只有交換單位範圍內的單位。例如,索引= 8的單位將保留舊索引,因爲之前的單位數保持不變。新指數之前的單位也是如此,他們保持舊指數。 –

+0

對不起蒂姆我只有當我實現它,並看到它的時候才明白你的代碼。我對其他問題感到困惑,我最好不要在這裏告訴;-)謝謝你的解決方案,因爲它應該是。 – Elisabeth