如何订购列表<string> </string>

时间:2014-04-29 14:21:46

标签: c# asp.net-mvc asp.net-mvc-4

我在asp.net mvc web应用程序中有以下内容: -

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();上收到了以下错误:

  

无法隐式转换类型&#39; void&#39;到&#39; System.Collections.Generic.List&#39;

3 个答案:

答案 0 :(得分:4)

Sort是一种无效方法 - 它会对现有列表进行排序,但不会返回任何内容。

您可以在将列表传递到视图之前调用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);
}

答案 1 :(得分:0)

试试这个:

 return View(f.AssignedPorts);

答案 2 :(得分:0)

ports.Sort()
f.AssignedPorts = ports;

这将为您提供结果。