C# 排序与按c排序#
我想将此代码更新为使用OrderBy而不是SortC# 排序与按c排序#,c#,list,linq,lambda,C#,List,Linq,Lambda,我想将此代码更新为使用OrderBy而不是Sort protected void Sort() { m_Items.Sort(new Comparison<PayArrayItem>( delegate (PayArrayItem x, PayArrayItem y) { return x.TransactionDate.CompareTo
protected void Sort()
{
m_Items.Sort(new Comparison<PayArrayItem>(
delegate (PayArrayItem x, PayArrayItem y)
{
return x.TransactionDate.CompareTo(y.TransactionDate);
}
));
}
protectedvoid排序()
{
m_Items.Sort(新比较(
代表(薪资分配项目x、薪资分配项目y)
{
返回x.TransactionDate.CompareTo(y.TransactionDate);
}
));
}
嗯,排序
进行就地排序,即对现有的m_项目进行排序
集合:
protected void Sort() {
m_Items.Sort((left, right) => left.TransactionDate.CompareTo(right.TransactionDate));
}
using System.Linq;
...
protected void Sort() {
m_Items = m_Items
.OrderBy(item => item.TransactionDate)
.ToList(); // Assuming m_Items is List<T>
}
相反,LinqOrderBy
创建一个新的IEnumerable
,您必须将其具体化并分配回集合:
protected void Sort() {
m_Items.Sort((left, right) => left.TransactionDate.CompareTo(right.TransactionDate));
}
using System.Linq;
...
protected void Sort() {
m_Items = m_Items
.OrderBy(item => item.TransactionDate)
.ToList(); // Assuming m_Items is List<T>
}
使用System.Linq;
...
受保护的空排序(){
m_项目=m_项目
.OrderBy(item=>item.TransactionDate)
.ToList();//假设m_项是列表
}
请注意,因为在
OrderBy
的情况下,我们会创建一个额外的列表
实例,所以在您的情况下,Sort
是更好的选择 m_项的类型是什么?m_项。OrderBy(m=>m.TransactionDate)
ListSort
将对列表进行原位排序,这意味着它将实际更改列表本身,而OrderBy
将返回一个新的(排序的)列表(准确地说,是一个IEnumerable)。这符合LINQ和函数式编程的一般主题,我想这将有助于你找到一个关于LINQ的教程,以便全面理解它们之间的差异。因为问题已经有了纯拷贝粘贴准备好的答案,所以我投票将其作为Sort与OrderBy更一般比较的副本来结束,它显示了各种语法,并解释了每种方法的差异。