Sql使用Entity框架在两个表之间连接 - 尝试从两个表绑定Gridview数据

时间:2017-06-22 12:15:06

标签: asp.net linq gridview jointable

我有一个gridview,最初我是从一个表中绑定数据(表1),它很简单

gvUsers.dataSource = class.getUsers()
gvUsers.databind()

Function getUsers () As List (Of Users)
  Return (From X in Table1 Select x).ToList()
End Function

但是,我的一些数据指向另一个表,表之间没有关系(没有外键)

Table 1 
  UID   Name    Age     Blood Type   Test Type
  1     Sam       22          2           3        
  2     Jane      23          2           4        

表2

ID  Domain    Code  Description
1   Blood Type  A   A
2   Blood Type  B   B
3   Test Type   1   1
4   Test Type   2   2

目前在gridView中我看到Blood Type为值2和Test type 3,4(第二个表ID),但我应该得到表2中的Code列值。 我如何加入这两个表 - 我知道是否有外键但是列名与行数据名称相等的事实让我很难弄明白!

干杯

2 个答案:

答案 0 :(得分:0)

试试这个:

select table1.*, table2.* from table1
inner join table2 on table1.Blood Type = table2.id

您可以从两个表中选择所需的列。

答案 1 :(得分:0)

尝试代码

var result = (from p in Table1.AsEnumerable()
                   join Blood in Table2.AsEnumerable() on p.BloodType equals Blood .ID
                   join Test in  Table2.AsEnumerable() on p.TestTyoe equals Test .ID
                   select new With 
                   {
                       uid = p.UID,
                       Name = p.name,
                       Age = p.age,
                       BloodType = Blood.Code,
                       TestType = Test .Code
                   }).ToList();

Sql Query IS:

 select UID ,Name,Age,B.Code as BloodType ,T.Code as TestType From Table1
 inner join Table2 B on Table1.BloodType = B.ID
 inner join Table2 T on Table1.TestType= T.ID

使用过的Vb然后

Dim result = from p in Table1.AsEnumerable()
                   join Blood in Table2.AsEnumerable() on p.BloodType equals Blood .ID
                   join Test in  Table2.AsEnumerable() on p.TestTyoe equals Test .ID
                   select               
                        p.UID,
                        p.name,
                        p.age,
                        Blood.Code,
                        Test.Code                    

        gvUsers.DataSource = result