2014-04-29 48 views
1

我有我的asp.net MVC Web應用程序中執行以下操作: -如何訂購列表<string>

public ViewResult Details(int id) 
{ 
    var f = repository.AllFindDetails_J(id); 
    List<string> ports = new List<string>(); 
    foreach(var p in f.CS.ITFirewalls) 
    { 
     ports.Add(p.CSPort); 
    } 
    foreach (var p2 in f.CS.ITRouters) 
    { 
     ports.Add(p2.CSPort); 
    } 
    foreach (var p3 in f.CS.ITSwitches) 
    { 
     ports.Add(p3.CSPort); 
    } 
    f.AssignedPorts = ports.Sort(); 
    return View(f); 
} 

,但我上了f.AssignedPorts = ports.Sort();以下錯誤:

無法隱式轉換類型'void'到'System.Collections.Generic.List'

+3

列表的.sort()的'返回類型'是無效的。 [見MSDN](http://msdn.microsoft.com/en-us/library/b0zbh7b6(V = vs.110)的.aspx)。 – mason

+0

此外,它可能是您所裝載值到港口,然後排序AssignedPorts。你是否想要返回List或Enumerable? – user15741

+0

你可以看到端口可以在三個實體中找到; ITFirewall,ITSwitch,ITRouter。所以我需要找到所有相關的端口並將它們作爲視圖模型的一部分傳遞給視圖。 –

回答

4

Sort是一個無效方法 - 它對現有列表進行排序,但將d沒有任何回報。

您可以在將清單傳遞到您的視圖前調用Sort,也可以使用OrderBy擴展方法對清單進行排序並返回帶有排序內容的新IEnumerable

選項#1:

public ViewResult Details(int id) 
{ 
    var f = repository.AllFindDetails_J(id); 
    List<string> ports = new List<string>(); 
    foreach(var p in f.CS.ITFirewalls) 
    { 
     ports.Add(p.CSPort); 
    } 
    foreach (var p2 in f.CS.ITRouters) 
    { 
     ports.Add(p2.CSPort); 
    } 
    foreach (var p3 in f.CS.ITSwitches) 
    { 
     ports.Add(p3.CSPort); 
    } 
    ports.Sort(); 
    f.AssignedPorts = ports; 
    return View(f); 
} 

選項#2:

public ViewResult Details(int id) 
{ 
    var f = repository.AllFindDetails_J(id); 
    List<string> ports = new List<string>(); 
    foreach(var p in f.CS.ITFirewalls) 
    { 
     ports.Add(p.CSPort); 
    } 
    foreach (var p2 in f.CS.ITRouters) 
    { 
     ports.Add(p2.CSPort); 
    } 
    foreach (var p3 in f.CS.ITSwitches) 
    { 
     ports.Add(p3.CSPort); 
    } 
    //OrderBy requires using System.Linq; 
    f.AssignedPorts = ports.OrderBy(port => port).ToList(); 
    return View(f); 
} 
0

試試這個:

return View(f.AssignedPorts); 
0
ports.Sort() 
f.AssignedPorts = ports; 

這會給你,你有結果。