+ -
当前位置:首页 → 问答吧 → LINQ 联合查询datatable 和xml

LINQ 联合查询datatable 和xml

时间:2011-12-07

来源:互联网

C# code

            string connstr = "server=.;database=hospital;uid=sa;pwd=123";
            DBHelper.SQLHelper db = new DBHelper.SQLHelper(connstr);
            DataTable dt = db.ExcuteToDataTable("select * from employee");
            DataTable td = db.ExcuteToDataTable("select * from hospital");
            var data = dt.AsEnumerable();
            var tada = td.AsEnumerable();
            var result = from da in data
                         join ta in tada
                         on da.Field<string>("hptid") equals ta.Field<string>("hptid")
                         where da.Field<Int32>("id") < 500
                         select new
                         { 
                           cardID=da.Field<Int32>("cardid"),
                           empName=da.Field<string>("empname"),
                           empSex=da.Field<string>("empsex"),
                           hptAddress=ta.Field<string>("hptname")
                         };



说什么 指定的转换无效

作者: a346729576   发布时间: 2011-12-07

帖出具体的错误信息
单步调试,查看 
var data = dt.AsEnumerable();
var tada = td.AsEnumerable();
是否有数据

作者: q107770540   发布时间: 2011-12-07

引用 1 楼 q107770540 的回复:

帖出具体的错误信息
单步调试,查看
var data = dt.AsEnumerable();
var tada = td.AsEnumerable();
是否有数据

var data = dt.AsEnumerable();
var tada = td.AsEnumerable();
这两个都有数据的

作者: a346729576   发布时间: 2011-12-07

引用 1 楼 q107770540 的回复:

帖出具体的错误信息
单步调试,查看
var data = dt.AsEnumerable();
var tada = td.AsEnumerable();
是否有数据


result的结果视图里面显示的 "指定的转换无效"

作者: a346729576   发布时间: 2011-12-07

未处理 System.InvalidCastException
  Message="指定的转换无效。"
  Source="System.Data.DataSetExtensions"
  StackTrace:
  在 System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value)
  在 System.Data.DataRowExtensions.Field[T](DataRow row, String columnName)
  在 LinqDemo01.Db.<Excute>b__5(<>f__AnonymousType0`2 <>h__TransparentIdentifier0) 位置 D:\Projects\LINQ\LinqDemo01\Program.cs:行号 34
  在 System.Linq.Enumerable.<SelectIterator>d__d`2.MoveNext()
  在 LinqDemo01.Db.Excute() 位置 D:\Projects\LINQ\LinqDemo01\Program.cs:行号 41
  在 LinqDemo01.Program.Main(String[] args) 位置 D:\Projects\LINQ\LinqDemo01\Program.cs:行号 15
  在 System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
  在 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
  在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
  在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
  在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
  在 System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

作者: a346729576   发布时间: 2011-12-07

C# code
var result = from da in data
                         join ta in tada
                         on da.Field<string>("hptid") equals ta.Field<string>("hptid")
                         where da.Field<int>("id") < 500
                         select new
                         { 
                           cardID=da.Field<int>("cardid")??0,
                           empName=da.Field<string>("empname")??"",
                           empSex=da.Field<string>("empsex")??"",
                           hptAddress=ta.Field<string>("hptname")??""
                         };

作者: q107770540   发布时间: 2011-12-07