0
以下代碼將CSV文件讀取到DataTable中。然後循環通在數據表中的所有列,並嘗試使用LINQ查詢生成所有不同值的每列數:爲什麼我的Linq GroupBy查詢不返回正確的計數值?
var g = allValues.AsEnumerable().GroupBy(i => i);
爲什麼「grp.Count()」值永遠不會大於1,即使我知道所有列都包含重複值?
private void button13_Click(object sender, System.EventArgs e)
{
DataSet ds = GetDataFromCSVFile(-1);
DataTable table = ds.Tables[0];
int test = 0;
string[] columnToSearch = { "" };
IList<ColumnDetail> colDetails = new List<ColumnDetail>();
foreach (DataColumn col in table.Columns)
{
columnToSearch[0] = col.ToString();
DataTable allValues = GetAllValuesFromColumn(table, columnToSearch);
var g = allValues.AsEnumerable().GroupBy(i => i);
test = 0;
foreach (var grp in g)
{
if (grp.Count() > 1)
MessageBox.Show(" grp.Key.ItemArray[0].ToString() : " + grp.Key.ItemArray[0].ToString() + " Cnt: " + grp.Count());
test++;
}
MessageBox.Show("Count is: " + test);
}
}
謝謝Servy。這解決了我的問題。我修改了這行:var g = allValues.AsEnumerable()。GroupBy(i => i); var g = allValues.AsEnumerable()。GroupBy(i => i,DataRowComparer.Default); – xpanzive