C# Linq查询到数据源,InvalidOperationException
我试图从一个简单的MS Access数据库本地文件中查询一个表,该查询有效,但我无法将其设置为DataSoruce:C# Linq查询到数据源,InvalidOperationException,c#,linq,C#,Linq,我试图从一个简单的MS Access数据库本地文件中查询一个表,该查询有效,但我无法将其设置为DataSoruce: IEnumerable<DataRow> result = from row in bDSpitalDataSet.Tabel.AsEnumerable() where row.Varsta >= up && row.Varsta <= dow
IEnumerable<DataRow> result = from row in bDSpitalDataSet.Tabel.AsEnumerable()
where row.Varsta >= up &&
row.Varsta <= down &&
row.CNP.StartsWith(Convert.ToString(sex))
select row;
DataTable resultTable = result.CopyToDataTable<DataRow>();
tabelBindingSource.DataSource = resultTable;
dataGridView1.Update();
IEnumerable result=来自bDSpitalDataSet.Tabel.AsEnumerable()中的行
where row.Varsta>=向上&&
row.Varsta我假设[1](edit:现在由OP确认)您在tabelBindingSource.DataSource=resultTable
处没有得到异常,而是在result.CopyToDataTable()
处得到异常,因为查询不包含任何数据行。新的DataTable
的列将从DataRow.Table.columns
派生,如果没有行,则没有信息
例外情况是:
无效操作异常
:
- 源序列中的
DataRow
的状态为Deleted
- 源序列不包含任何
数据行
对象
- 源序列中的
DataRow
为null
在执行以下操作之前,您可以使用Any
进行检查:
if(result.Any())
{
DataTable resultTable = result.CopyToDataTable<DataRow>();
tabelBindingSource.DataSource = resultTable;
dataGridView1.Update();
}
更高效的客户端,因为result.Any()
需要执行查询以确定是否至少有一行,result.CopyToDataTable()
再次执行它
[1] 为什么我认为你提到的错误行是错误的?由于你的评论:
System.Data.DataSetExtensions.dll中发生类型为“System.InvalidOperationException”的未处理异常
tabelBindingSource
的类型是什么?InvalidOperationException
有一条消息,通常描述潜在问题。此外,堆栈跟踪可能会提供问题所在的其他提示。也许您想要dataGridView1.DataSource=Resultable??TabeBindingSource是BindingSource类dataGridView1.DataSource=Resultable的实例,与Tanks相同,只有一个问题,如果我没有得到任何结果,如何显示空的数据网格?@Daniel:您可以将null
指定为DataGridView
或BindingSource
的DataSource
。
DataTable resultTable = bDSpitalDataSet.Tabel.Clone();
foreach(DataRow row in result.Rows)
resultTable.LoadDataRow(row.ItemArray, false);