Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 使用var匿名对象获取LINQ的InvalidCastException_C#_Linq_Linq To Xml_Linq To Dataset - Fatal编程技术网

C# 使用var匿名对象获取LINQ的InvalidCastException

C# 使用var匿名对象获取LINQ的InvalidCastException,c#,linq,linq-to-xml,linq-to-dataset,C#,Linq,Linq To Xml,Linq To Dataset,我在尝试使用foreach构造中的var变量循环查询对象时出错。出于明确的原因,我正在将xml加载到dataset并执行dataset到Linq。请纠正我的错误。这是我的代码: ds.ReadXml(fsReadXml); DataTable myDataTable = ds.Tables[0]; var ordersQuery = myDataTable.AsEnumerable(); var subQuery = (from Geo03 in ordersQuery

我在尝试使用foreach构造中的var变量循环查询对象时出错。出于明确的原因,我正在将xml加载到dataset并执行dataset到Linq。请纠正我的错误。这是我的代码:

ds.ReadXml(fsReadXml);

DataTable myDataTable = ds.Tables[0];

var ordersQuery = myDataTable.AsEnumerable();

var subQuery = (from Geo03 in ordersQuery
                select new
                {
                    PARENTTYPE = Geo03.Field<String>("PARENTTYPE"),
                    PARENTINSTANCE = Geo03.Field<int>("PARENTINSTANCE"),
                    CHILDTYPE = Geo03.Field<String>("CHILDTYPE"), 
                    CHILDINSTANCE = Geo03.Field<String>("CHILDINSTANCE"),
                    CHILDPOS = Convert.ToInt32(Geo03.Field<int>("CHILDPOS"))
});
XDocument doc = null;
foreach (var cin in subQuery)
{


}
这是生成的错误:

System.InvalidCastException: Specified cast is not valid.
   at System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value)
   at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName)
   at SpectraWorkon.Program.<Main>b__0(DataRow Geo03) in c:\users\arun\documents\visual studio 2010\Projects\SpectraWorkon\SpectraWorkon\Program.cs:line 29
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at SpectraWorkon.Program.Main(String[] args) in c:\users\arun\documents\visual studio 2010\Projects\SpectraWorkon\SpectraWorkon\Program.cs:line 38

子查询中foreach var cin行出现错误,表示无法强制转换。

您在非int字段上调用字段。

您在非int字段上调用字段。

请记住,linq查询只有在您实际在foreach循环中使用或调用.ToList时才会执行。因此,在您的情况下,例外情况出现在构建查询的部分。InvaliCastException表示您填写的字段不是您期望的类型。因此,我建议您检查查询中字段的类型。

请记住,linq查询在您实际使用它之前不会执行,例如在foreach循环中,或者调用.ToList。因此,在您的情况下,例外情况出现在构建查询的部分。InvaliCastException表示您填写的字段不是您期望的类型。因此,我建议您在查询中检查字段的类型。

+1以获得更深入的解释。stacktrace明确表示它来自字段,但没有说明如何使用+1进行更深入的解释。stacktrace明确地说它来自字段,但没有说how@all,那么如何遍历我的查询?。我迷路了。:@all,那么如何遍历我的查询?。我迷路了。: