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