当前位置:编程学习 > C#/ASP.NET >>

如何对几个表进行关联

这里首先我从sql数据库里查询获得了2张表,
表A:ID,time,bookid,md

表B:bookid,bookname
我把他们在放在程序里,用datetable存放tableA,tableB
然后我自己有一个execl表,我将表里的数据读出,同样放到tableC
tableC:projectname,bookname,fy

现在想关联这三张表,查询出
projectname,bookname,ID,bookid,md,fy,md+fy
放到一个新的table里,然后绑定到dataGridView1,显示出来


注(为什么不把execl直接创建在数据库里呢,因为不能改变数据库的结构,怕出错) --------------------编程问答-------------------- linq
 DataTable dt1 = CreateDataTable();
                DataTable dt2 = CreateDataTable();
                DataTable dt3 = CreateDataTable();
                var result = from a in dt1.AsEnumerable()
                             join b in dt2.AsEnumerable()
                                 on a.Field<int>("bookid") equals b.Field<int>("bookid")
                             join c in dt3.AsEnumerable() on b.Field<string>("bookname") equals c.Field<string>("bookname")
                             select new 
                             {
                                 projectname = c.Field<string>("projectname"),
                                 bookname = b.Field<string>("bookname"),
                                 ID = a.Field<int>("ID"),
                                 bookid = b.Field<int>("bookid"),
                                 md = a.Field<string>("md"),
                                 fy = c.Field<string>("fy"),
                                 md_and_fy = a.Field<string>("md") + c.Field<string>("fy")
                             };
--------------------编程问答-------------------- 这个貌似不好做,循环判断?效率太低,看看DATASET中有没有办法 --------------------编程问答-------------------- 不是很明白

TableC怎么AB关联?
md,fy是啥字段? --------------------编程问答-------------------- 都读到内存中了,用linq不是轻而易举... --------------------编程问答-------------------- 可以建立个视图吗?
--------------------编程问答-------------------- 楼主问这个问题 想必对linq也不会很了解,二楼还是上一般的查询语句吧 --------------------编程问答-------------------- 2L,你好, 我根据你说的弄成这样
可是var result 值为null,怎么回事呢
          
var result = from a in dt1.AsEnumerable()
                                join b in dt2.AsEnumerable()
                                    on a.Field<int>("书名") equals b.Field<int>("书名")
                                select new
                                {
                                    项目名 = b.Field<string>("项目名"),
                                    书名 = b.Field<string>("书名"),
                                    凭证编号 = a.Field<int>("凭证编号"),
                                    科目名称 = a.Field<string>("科目名称"),
                                    日期 = a.Field<DateTime>("日期"),
                                    成本 = a.Field<float>("成本"),
                                    费用 = b.Field<float>("费用"),
                                    总费用 = a.Field<float>("成本") + b.Field<float>("费用")
                                };
--------------------编程问答-------------------- 或者说,如何把result绑定到dataGridView1控件去呢 --------------------编程问答-------------------- 2L的如果可以的话,怎么把它填充到dataset里呢
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,