c# - 排序列表而不创建新变量

标签 c# c#-4.0

我正在尝试使用 Enumerable.OrderBy对列表进行排序,因为最终我希望能够按多个字段进行排序。目前它似乎只有在我创建一个新变量 var 时才有效保留结果 View ,这意味着(我认为)需要重新转换类型。

有没有一种方法可以按多个字段对列表进行排序,同时保留原始列表变量和类型? IE。我宁愿以变量 _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;
}

最佳答案

您知道,您可以通过...对一个订单执行多个子排序

lst.OrderBy(x => x.Prop1).ThenBy(x => x.Prop2).ThenByDescending(x => x.Prop3)...

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

编辑:

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

from x in lst
order by x.Prop1, x.Prop2, x.Prop3
select x

关于c# - 排序列表而不创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12820752/

相关文章:

c# - 为什么参数没有更新?

c# - 后台线程 C#

c# - .NET Singleton 长时间运行的秒表实例

c# - 尝试创建一个包含 2 个插入的存储过程

c# - 在 Windows 7 中注销 Alt-Tab 热键

javascript - 如何从 ASP.Net 发布然后重定向到外部 URL?

C# 4.0 : Can I use a TimeSpan as an optional parameter with a default value?

c# - 查找 ToolStripMenuItem 的父控件

SQLite WAL 与 C# Entity Framework

c# - 动态覆盖方法 - 或 - 在运行时调用方法时观察?