2014-04-29 47 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; 

这会给你,你有结果。