如何使用LINQ进行条件排序

本文关键字:条件 排序 何使用 LINQ | 更新日期: 2023-09-27 18:03:21

我正在使用linq从xml文件中获取数据。这是我的密码。

XDocument document = XDocument.Load(@"c:'users'tridip'documents'visual studio 2010'Projects'WindowsFormsApplication5'WindowsFormsApplication5'Orders.xml");
            var books = from r in document.Descendants("Orders")
            .Skip(0)
            .Take(5)
            select new
            {
                OrderID = r.Element("OrderID").Value,
                CustomerID = r.Element("CustomerID").Value,
                EmployeeID = r.Element("EmployeeID").Value,
            };
          dataGridView1.DataSource=  books.ToList().OrderBy(a=> a.OrderID);

当我添加这一行CCD_ 1时,数据网格视图中没有显示任何数据。

所以我的问题是,我们不能通过这种方式添加订单books.ToList().OrderBy(a=> a.OrderID);吗?

我的第二个问题是如何有条件地进行订单?

我将在某个时间向我的函数发送一个参数,如ASC或某个时间DESC。如果我发送ASC,则排序将按升序进行,或者某个时间排序将按降序进行。

因此,请指导我如何编写代码,以升序或降序对数据进行排序。感谢

如何使用LINQ进行条件排序

books.ToList().OrderBy(a=> a.OrderID) 

将导致两个枚举:立即枚举ToList((,延迟枚举OrderBy((。您应该能够通过以下方式获得订单列表:

books.OrderBy(a=> a.OrderID).ToList();

条件排序很简单,因为在实际枚举之前,"books"将是"IQueryable"的实现。因此,您可以这样做:

if (true)
    books = books.OrderBy();
var results = books.ToList();