Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq查询到数据源,InvalidOperationException_C#_Linq - Fatal编程技术网

C# Linq查询到数据源,InvalidOperationException

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

我试图从一个简单的MS Access数据库本地文件中查询一个表,该查询有效,但我无法将其设置为DataSoruce:

 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);