有两个数据库,一个是管理,一个是业务
在管理数据库中有一个用户表,里面有用户名和用户ID等字段。
在业务数据库中查询出一个dataset,里面有用户ID对应的一些业务数据,现在要把这些用户ID显示成用户名,就要连到管理数据库,用linq怎么实现

解决方案 »

  1.   

    http://book.51cto.com/art/200812/102182.htm
    看下这篇文章
    或许对你有帮助
      

  2.   

    你先把用户表的数据查询出来存在DataSet,如果:DSA
    然后业务:DSB
    var result=from u in DSA join from r in DSB on r.用户表的ID equals u.业务表对应的ID
    select new 
    {
    u.用户名称,r.Name,r.XXX,r.XXX(你要将业务表要显示的字段用r.写出来就行了)
    }
      

  3.   

    我在业务数据库得到的DataSet是用一个存储过程得到的,然后按你这样写的时候提示join 子句中一个表达式的类型不正确。类型推理在对“Join”的调用中失败。
      

  4.   


    var result=from u in DSA.Tables[0].AsEnumerable() join from r in DSB.Tables[0].AsEnumerable() 
      on u.Field<ID字段的类型>("ID") equals r.Field<ID字段类型>("业务表对应的ID")  select new 
     { u.Field<string>("username"),...都按这种格式取就行了 }
      

  5.   

    多谢你了,还是有点问题啊。
    DB是我的管理数据库,里面有TUser表,表里有用户ID(UserID),用户姓名(UserName),ds是从业务数据中用存储过程得到的一个数据集,里面也有UserID字段。
    var studentinfo = from o in DB.TUser.AsEnumerable() 
              join q in ds.Tables[0].AsEnumerable() on o.UserID equals q.Field<string>("UserID ")
              select new { o.Field<string>("UserName"), q.Field <string>("UserID ") };
    在o和q都提示
    无效的匿名类型成员声明符。匿名类型成员必须使用赋值、简单名称或成员访问来声明。
      

  6.   

     DB.TUser是什么类型的?是List<T>集合?还是DataSet?var studentinfo = from o in DB.TUser.AsEnumerable() 
              join q in ds.Tables[0].AsEnumerable() on o.UserID equals q.Field <string>("UserID ") 
              select new { o.Field <string>("UserName"), q.Field <string>("UserID ") }; 第一个o.UserID都直接取,后面为什么又o.Field<String>("UserName")?
    如果你DB.TUser的话 select new 里面就可以直接使用o.UserName了
      

  7.   

    DB.TUser是一个管理数据库中的一个表,ds是从业务数据库查询得到的一个数据集,在select new里面是可以直接用o.UserName。o里的字段都可以直接引用,但是q.Field <string>("UserID ")这样写就不行啊,提示无效的匿名类型成员声明符。匿名类型成员必须使用赋值、简单名称或成员访问来声明。 要怎么做呢,再次感谢!
      

  8.   

    那你就在前面加一个显示的值
    var studentinfo = from o in DB.TUser.AsEnumerable() 
              join q in ds.Tables[0].AsEnumerable() on o.UserID equals q.Field <string>("UserID ") 
              select new { o.Field <string>("UserName"), UserID=q.Field <string>("UserID ") };