你说的很奇怪If I remove all columns from myGV it does display data...。我重现了您的问题,原因是您的LINQ查询未执行。ToList()在使用以下结果之前,您必须调用或DataSource类似方法DataGridView:
myGV.DataSource = Logs.logList.OrderBy(x => x.Time).ToList();
当然,如果您的静态列DataPropertyName与 DataSource 的属性不匹配,那么添加到您的列DataGridView将比您预期的要多。例如,假设在设计时添加了所有Time,Description并且没有分配任何and (默认情况下),如果您如上所述分配您的 ,您可能有 6 列,而不是 3 列。所以您可以分配您的在为您分配 之前添加了列,如下所示:ErrorDataPropertyNameyourDataGridView.AutoGenerateColumns = trueDataSourceDataGridViewDataGridViewDataPropertyNameDataSourceDataGridView
myGV.Columns["Time"].DataPropertyName = "Time";
myGV.Columns["Description"].DataPropertyName = "Description";
myGV.Columns["Error"].DataPropertyName = "Error";
myGV.DataSource = Logs.logList.OrderBy(x => x.Time).ToList();//This should be called at here after all the DataPropertyNames are initialized.
我建议您设置myGV.AutoGenerateColumns = true(默认情况下)并删除所有添加的列,让DataGridView自动为您生成列。