我使用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);
我添加此行.OrderBy(a=> a.OrderID);
的那一刻,然后没有数据通过datagridview显示。
所以我的问题是我们不能这样添加OrderBy books.ToList().OrderBy(a=> a.OrderID);
吗?
我的第二个问题是如何通过有条件的方式进行排序?
如果我发送ASC
,我会在DESC
或某段时间ASC
向我的函数发送一个参数,然后按升序完成排序,或者一些时间排序将完成按降序排列。
所以请指导我如何编写代码,这些代码会将我的数据按时间升序或按降序排序。感谢
答案 0 :(得分:1)
books.ToList().OrderBy(a=> a.OrderID)
将导致两个枚举:一个用于ToList(),一个用于OrderBy()。您应该能够通过以下方式获得有序列表:
books.OrderBy(a=> a.OrderID).ToList();
答案 1 :(得分:0)
条件排序很简单,因为'books'将是'IQueryable'的实现,直到你实际枚举它为止。因此,你可以这样做:
if (true)
books = books.OrderBy();
var results = books.ToList();