我有这段代码
public void OrdenarPedidosPorFecha()
{
pedidos.OrderBy(pedido => pedido.fechaEntrega);
}
Plan planT = new Plan();
Producto productoT = new Producto("productoTest", 0, 0, 0);
Cliente clienteT = new Cliente("clienteTest", 0);
Pedido pedidoT = new Pedido(productoT, clienteT, 0, DateTime.Now);
Producto productoT1 = new Producto("productoTest1", 0, 0, 0);
Cliente clienteT1 = new Cliente("clienteTest1", 0);
Pedido pedidoT1 = new Pedido(productoT1, clienteT1, 0, DateTime.Now.AddDays(1));
Producto productoT2 = new Producto("productoTest2", 0, 0, 0);
Cliente clienteT2 = new Cliente("clienteTest2", 0);
Pedido pedidoT2 = new Pedido(productoT2, clienteT2, 0, DateTime.Now.AddDays(2));
planT.AgregarPedidoAPlan(pedidoT2);
planT.AgregarPedidoAPlan(pedidoT);
planT.AgregarPedidoAPlan(pedidoT1);
MessageBox.Show(planT.pedidos[0].fechaEntrega.ToString());
MessageBox.Show(planT.pedidos[1].fechaEntrega.ToString());
MessageBox.Show(planT.pedidos[2].fechaEntrega.ToString());
planT.OrdenarPedidosPorFecha();
MessageBox.Show(planT.pedidos[0].fechaEntrega.ToString());
MessageBox.Show(planT.pedidos[1].fechaEntrega.ToString());
MessageBox.Show(planT.pedidos[2].fechaEntrega.ToString());
当它显示它们时输出是相同的。你知道为什么不比较日期吗?我也尝试将.Date添加到fechaEntrega中,它也不起作用。
答案 0 :(得分:2)
LINQ' OrderBy
没有对源序列进行排序,但它会返回一个有序序列。
您需要在致电pedidos
后再次设置OrderBy
。
答案 1 :(得分:1)
pedidos.OrderBy(pedido => pedido.fechaEntrega);
这不会修改pedidos
集合,只需生成有序的可枚举(技术上为IOrderedEnumerable<T>
)。
如果pedidos是List<T>
使用
pedidos.Sort((x, y) => x.fechaEntrega.CompareTo(y.fechaEntrega));
如果fechaEntrega
可以null
使用
var comparer = Comparer<type of fechaEntrega>.Default;
pedidos.Sort((x, y) => comparer.Compare(x.fechaEntrega, y.fechaEntrega));
其中type of fechaEntrega
是fechaEntrega
的类型。
List<T>.Sort
修改排序它的基础列表。