可以說我有3個菜單項。每個人內部都有(例如)5個鏈接。所以我有一個是這樣的:排序列表並給每個項目一個新的排序索引
//This is just some test-code. normally i''ll get the data from a database
List<NavigationModel> navigation = new List<NavigationModel>();
Random randomInt = new Random();
for (int i = 0; i < 5; i++)
{
NavigationModel m = new NavigationModel();
m.MenuName = "Users";
m.LinkName = "Link (" + i + ")";
m.ControllerName = "AAA";
m.ActionName = "Function" + i;
m.SortingMenu = 5;
navigation.Add(m);
}
for (int i = 0; i < 5; i++)
{
NavigationModel m = new NavigationModel();
m.MenuName = "Help";
m.LinkName = "Link (" + i + ")";
m.ControllerName = "BBB";
m.ActionName = "Function" + i;
m.SortingMenu = 10;
navigation.Add(m);
}
for (int i = 0; i < 5; i++)
{
NavigationModel m = new NavigationModel();
m.MenuName = "Home";
m.LinkName = "Link (" + i + ")";
m.ControllerName = "CCC";
m.ActionName = "Function" + i;
m.SortingMenu = 2;
navigation.Add(m);
}
navigation = navigation.OrderBy(x => x.SortingMenu).ToList();
正如你可以看到我會得到3個菜單項與正確的排序,但我需要排序由0,緊接着1,2開始...
我怎樣才能做到這一點沒有硬編碼或數據庫更新命令?
假設排序是穩定的,你需要通過2先進行排序,然後按1,然後由0(如果我正確地理解你的問題) – Nolonar 2013-04-22 08:25:05
我仍然不能確定你想要達到的目的。然而,你不需要3個循環,你可以通過使用一個循環來重構這個循環,並且在裏面聲明多個'NavigationModel'對象。 – 2013-04-22 08:26:29
@Nolonar我的3個項目得到了這個排序值:(5,10,2)。在lambda排序後,我會得到(2,5,10)。無論如何,我想這個排序改變爲這個值:(0,1,2) – Werner 2013-04-22 08:30:04