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

use*_*293 1 c# linq linq-to-xml linq-to-dataset

我在使用foreach构造中的var变量尝试循环查询对象时遇到错误.我正在将xml加载到数据集中,并出于明确原因对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)
{


}
Run Code Online (Sandbox Code Playgroud)

这是生成的错误:

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
Run Code Online (Sandbox Code Playgroud)

我收到该行的错误 foreach (var cin in subQuery),说它无法投射.

SLa*_*aks 5

你正在呼唤Field<int>一个不是的领域int.