我有DataGridView
並且單元格的值爲bool
值true
或false
。我需要根據具有真值的計數對行進行排序。具有最多真實單元格的行應該在頂部,並且具有最低真實值的行應該在底部。在datagridview中對行進行排序值
數據在Access數據庫中,我使用TableAdapter
加載數據。
我有DataGridView
並且單元格的值爲bool
值true
或false
。我需要根據具有真值的計數對行進行排序。具有最多真實單元格的行應該在頂部,並且具有最低真實值的行應該在底部。在datagridview中對行進行排序值
數據在Access數據庫中,我使用TableAdapter
加載數據。
您可以使用這些選項:
DataTable
來對數據進行排序。使用的數據表
計算列添加一個新列到表中,並設置列的Expression
。然後排序表使用數據表的DefaultView.Sort
屬性:
table.Columns.Add("Value4", typeof(int),
"Convert(ISNULL(Value1,false), 'System.Int32') + " +
"Convert(ISNULL(Value2,false), 'System.Int32') + " +
"Convert(ISNULL(Value3,false), 'System.Int32')");
table.DefaultView.Sort = "Value4 DESC";
this.dataGridView1.DataSource = table;
使用LINQ
您可以使用OrderByDescending
的行基於連續真值的計數這樣排序:
var temp = table.Clone();
table.Rows.Cast<DataRow>()
.OrderByDescending(x => x.ItemArray.OfType<bool>().Count(b=>b==true))
.ToList().ForEach(x =>
{
temp.Rows.Add(x.ItemArray);
});
this.dataGridView1.DataSource = temp;
選項與鏈接是好的,但我不明白我如何替換「表」。我只有綁定源,datagridview和tableadapter – bfdbndfnd
像這樣:'var temp = this.dataSet1.SomeTable.Clone();'最後'this.bindingSource1.DataSource = temp;' –
例如,我有datagridview [鏈接](http://imgur.com/8lwkE2z),單元格的值爲true或false。需要對具有最多真值的行進行排序,並按降序排列 – bfdbndfnd
datasource是Access數據表。在數據連接 - 添加數據源 – bfdbndfnd
datagridview只讀 – bfdbndfnd