我正在尝试使用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)
您知道,您可以通过以下方式为订单执行多个子排序...
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)
归档时间: |
|
查看次数: |
2002 次 |
最近记录: |