排序列表而不创建新变量

use*_*963 4 c# c#-4.0

我正在尝试使用Enumerable.OrderBy对List进行排序,因为最终我希望能够按多个字段进行排序.目前,如果我创建一个新变量var来保存结果视图,这似乎有效,这意味着(我认为)需要重新构建类型.

是否有一种方法可以在保留原始List变量和类型的同时对List进行排序多于1个字段?即我最终会_orderedbins得到类型的变量List<orderedbins>

以下是我目前的情况,但是从var test = ...开始的所有内容似乎都有点不对.

public class orderedBins
{
    public string Bin { get; set; }
    public int Order { get; set; }
}

List<orderedbins> _orderedbins = new List<orderedbins>();
foreach (string item in splitbins)
{
    string[] spbinSetting = item.Split(',');
    bool bchecked = bool.Parse(spbinSetting[1]);
    int border = int.Parse(spbinSetting[2]);

    if (bchecked == true)
    {
        _orderedbins.Add(new orderedbins { bin = spbinSetting[0], Order = border });
    }
}

var test =_orderedbins.OrderBy(x => x.Order);
foreach (var item in test)
{
   string f = item.Bin;
   int g = item.Order;
}
Run Code Online (Sandbox Code Playgroud)

Sim*_*Var 5

您知道,您可以通过以下方式为订单执行多个子排序...

lst.OrderBy(x => x.Prop1).ThenBy(x => x.Prop2).ThenByDescending(x => x.Prop3)...
Run Code Online (Sandbox Code Playgroud)

只需添加一个.ToList();并用变量引入它,就可以将结果放在一个列表变量中.

编辑:

Willem提出了很好的建议,以提高可读性:

from x in lst
order by x.Prop1, x.Prop2, x.Prop3
select x
Run Code Online (Sandbox Code Playgroud)