linq to sql两张表的链接查询问题

时间:2022-08-31 20:49:50
数据库中我有2个表,分别是: 
student表:int ID;varchar(50) Name; 
class表:int ID;int studentID(外码); 
在vs2008中新建一个LINQ To SQl类后自动生成代码我就不写了。 
然后我有一个页面a.aspx,得知一个class的ID后,想到得到其中所有学生的id,然后用代码方式绑定到gridview中输出。 
在这里,我不太知道怎么用ling to sql的语言查询,请指教: 
protected void Page_Load(object sender, EventArgs e) 
    { 
        if (!IsPostBack) 
        { 
            int ID = Request[ID]; 
            DataClassesDataContext db = new DataClassesDataContext(); 
            IList <student> studentlist = ???????; 
            //麻烦大牛们帮我填一下?????, 
        } 
    }

8 个解决方案

#1


表结构有问题
class表:int ID;int studentID(外码); 

#2


studentlist = db.class.where(a => a.ID = ID).select(a => a.ID);

#3


引用楼主 holywindsfy 的帖子:
数据库中我有2个表,分别是: 
student表:int ID;varchar(50) Name; 
class表:int ID;int studentID(外码); 
在vs2008中新建一个LINQ To SQl类后自动生成代码我就不写了。 
然后我有一个页面a.aspx,得知一个class的ID后,想到得到其中所有学生的id,然后用代码方式绑定到gridview中输出。 
在这里,我不太知道怎么用ling to sql的语言查询,请指教: 
protected void Page_Load(object sender, EventArgs e) 
    { 
 …

IList <student> studentlist =from u in db.Student.Where(u=>u.ID=你已知的ID).Select(r=>u.ID).ToList();

#4


错了,你只要一个ID,返回类型不是IList <student> 
应该是你ID的类型,如果 ID是int的话就是IList<int>

#5


from u in db.Student
Where(u=>u.ID=classID)
Select  u.ID).ToList();

#6


楼上的正确!! 关键是这个表建的 有些问题

#7


数据库中建立了外键linq to sql会自动生成实体的级联

#8


好象你的表结构设计有问题也(不说也罢);
你能否在数据库中为二者的关联添加一视图vClass: 
select class.ID as cID, student.ID as sID, student.Name as sName from class join student on class.ID=student.ID;
在linq建立视图映射类:vClass;

int ID = Request[ID]; 
DataClassesDataContext db = new DataClassesDataContext(); 
var result=from v in db.vClass
           where v.cID==ID
           select v;
gridView.datasource=result;
gridView.databind();

尝试一下;如果不建立视图,就使用你自身的linq:
int ID = Request[ID]; 
DataClassesDataContext db = new DataClassesDataContext(); 
var result=from v in db.Class
           where v.cID==ID
           select v;
gridView.datasource=result.student;   //从表数据做为Class的一个字段student;
gridView.databind();

 

#1


表结构有问题
class表:int ID;int studentID(外码); 

#2


studentlist = db.class.where(a => a.ID = ID).select(a => a.ID);

#3


引用楼主 holywindsfy 的帖子:
数据库中我有2个表,分别是: 
student表:int ID;varchar(50) Name; 
class表:int ID;int studentID(外码); 
在vs2008中新建一个LINQ To SQl类后自动生成代码我就不写了。 
然后我有一个页面a.aspx,得知一个class的ID后,想到得到其中所有学生的id,然后用代码方式绑定到gridview中输出。 
在这里,我不太知道怎么用ling to sql的语言查询,请指教: 
protected void Page_Load(object sender, EventArgs e) 
    { 
 …

IList <student> studentlist =from u in db.Student.Where(u=>u.ID=你已知的ID).Select(r=>u.ID).ToList();

#4


错了,你只要一个ID,返回类型不是IList <student> 
应该是你ID的类型,如果 ID是int的话就是IList<int>

#5


from u in db.Student
Where(u=>u.ID=classID)
Select  u.ID).ToList();

#6


楼上的正确!! 关键是这个表建的 有些问题

#7


数据库中建立了外键linq to sql会自动生成实体的级联

#8


好象你的表结构设计有问题也(不说也罢);
你能否在数据库中为二者的关联添加一视图vClass: 
select class.ID as cID, student.ID as sID, student.Name as sName from class join student on class.ID=student.ID;
在linq建立视图映射类:vClass;

int ID = Request[ID]; 
DataClassesDataContext db = new DataClassesDataContext(); 
var result=from v in db.vClass
           where v.cID==ID
           select v;
gridView.datasource=result;
gridView.databind();

尝试一下;如果不建立视图,就使用你自身的linq:
int ID = Request[ID]; 
DataClassesDataContext db = new DataClassesDataContext(); 
var result=from v in db.Class
           where v.cID==ID
           select v;
gridView.datasource=result.student;   //从表数据做为Class的一个字段student;
gridView.databind();