订购datagridview以linq降序

时间:2014-02-07 03:21:35

标签: c# linq

我尝试订购我的datagridview但不能。在网上我找到并修改了这个:

 List<DataGridViewRow> q = (from item in dataGridView1.Rows.Cast<DataGridViewRow>()
                            orderby item.Cells[0].Value descending
                            select item).ToList<DataGridViewRow>();

但它不起作用,因为我不知道如何将此列表分配给我的datagridview的数据源。

也许,这不是正确的形式。在其他项目中,我将数据放在我的datagridview列表中,然后在列表中执行linq查询,它就可以了。在datagridview中怎么样?

2 个答案:

答案 0 :(得分:1)

只需使用DataGridView.Sort()方法:

dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Descending);

如果您决定使用LINQ(可能是更复杂的排序,或以其他方式操纵数据),最好采用原始数据源(即列表),就像您说的那样之前完成的。

我认为你不能以通用的方式做你想做的事,因为DataSourceobject,所以最终你需要施放DataSource返回到您用于填充DataGridView的原始数据类型。

答案 1 :(得分:1)

试试这个,

List<DataGridViewRow> q = (from item in dataGridView1.Rows.Cast<DataGridViewRow>()
                            orderby item.Cells[0].Value descending
                            select item).ToList<DataGridViewRow>();

dataGridView1.DataSource = q.Select(x => x.DataBoundItem).Cast<Employee>().ToList();

对于演员而言,我已通过Employee,但你需要通过你的课而不是Employee

或者您可以在不进行强制转换的情况下绑定数据源,例如

dataGridView1.DataSource = q.Select(x => x.DataBoundItem).ToList();