我正在尝试使用 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/