[英]How sort generic list like datatable in c#
i working on c# project(winform). 我在c#项目(winform)上工作。
on my project, i sorted a datatable like this: 在我的项目中,我对数据表进行了如下排序:
dt.DefaultView.Sort = "a ASC, b ASC, c ASC";
now with below expression, i sorted a generic list, but results is different against datatale results. 现在使用下面的表达式,我对通用列表进行了排序,但是结果与数据故事的结果不同。
var newList = oldList.OrderBy(x => x.a).OrderBy(x => x.b).OrderBy(x => x.c).ToList();
how can sorted my generic list like datatable results? 如何对我的通用列表进行排序(如数据表结果)? (i want have same sort datatable results in generic list)
(我想在通用列表中有相同排序的数据表结果)
thanks. 谢谢。
Use ThenBy
/ ThenByDescending
after first OrderBy
/ OrderByDescending
operator - it performs subsequent ordering of already ordered sequence: 在第一个
OrderBy
/ OrderByDescending
运算符之后使用ThenBy
/ ThenByDescending
它对已排序的序列执行后续排序:
var newList = oldList.OrderBy(x => x.a)
.ThenBy(x => x.b)
.ThenBy(x => x.c)
.ToList();
Otherwise you are re-ordering full sequence each time by different value (ie you are introducing new primary ordering that ignores previous ordering - see Remarks section on MSDN). 否则,您每次都按不同的值对完整序列进行重新排序(即,您要引入忽略先前排序的新主排序-请参阅MSDN上的“ 备注”部分)。 And you'll end up with sequence sorted only by value provided to last
OrderBy
call (property c
in your case). 最后,您将得到仅按提供给上次
OrderBy
调用的值排序的序列(在您的情况下为属性c
)。 Your current code is equivalent of 您当前的代码等效于
dt.DefaultView.Sort = "a ASC";
dt.DefaultView.Sort = "b ASC";
dt.DefaultView.Sort = "c ASC";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.