[英]C# Counting number occurences dataGridView
假設 dataGridView1 綁定到 DataTable (在我的示例中為dt
),或者可以,您可以做一些 Linq 功夫來投射另一個可以綁定到第二個網格的集合:
var projection = dt.AsEnumerable()
.Select(n => n.Field<decimal>("Nome"))
.GroupBy(d => d)
.Select(d => new { Numero = d.Key, FrequenciaR = d.Count(), FrequenciaA = (decimal)d.Count() / dt.Rows.Count })
.ToList();
此代碼獲取 Nomes 列表並按其值對它們進行分組。 此時您將擁有 3 個 IGrouping。 然后Select
組的鍵(數字),組中有多少的計數,最后是數字除以表中的行數。
projection
是一個可以綁定到第二個數據網格的列表。 您當然可以投影到您定義的 class 類型。
更新
您可以直接使用 gridview 行,盡管它有點尷尬。 我鼓勵您考慮閱讀數據綁定 collections,但試試這個,它與我的第一個示例相同,它只是針對 DataGridViewRowCollection 執行此操作:
var projection2 = dataGridView1.Rows.Cast<DataGridViewRow>()
.Where(dgvr => dgvr.Cells[0].Value != null) // don't count blank rows
.Select(dgvr => (decimal)dgvr.Cells[0].Value )
.GroupBy(d => d)
.Select(d => new { Numero = d.Key, FrequenciaR = d.Count(), FrequenciaA = (decimal)d.Count() / (dataGridView1.Rows.Count - 1) }) // count - 1 to exclude last edit row
.ToList();
如果你有 LINQPad,你可以運行我的例子
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.