var c = from p in db.Testings
where p.id == Convert.ToInt32(k)
select new{p.ItemId};`
上面的Linq返回了包含不同ItemIds的多个行。 现在,我试图从Questions表中检索包含我在上面的linq中返回的所有ItemIds的所有行。正如所料,以下代码无效。任何人都可以帮我解决这个逻辑或纠正我的代码,如果这是一个小的逻辑错误。
var cfk = from p in db.Questions
where p.ItemId == Convert.ToInt32(c)
select p;
GridView4.DataSource = cfk;
GridView4.DataBind();
答案 0 :(得分:0)
类似的东西:
var cfk = from p in db.Questions
where c.Contains(p.ItemId)
select p;
答案 1 :(得分:0)
您可以使用LINQ执行内部联接。
http://msdn.microsoft.com/en-us/library/bb397941.aspx
如果可能的话,我可能会在你的Get()期间在Db端进行连接。
答案 2 :(得分:0)
根据您选择的'cfk'作为第二个变量名称,我猜你已经设置了数据库,使得Questions.ItemId是Testings的外键,其中Testings.ItemId是Testings and Testings的主键。 id是其他一些非关键列。
如果是这种情况,你可以说:
var cfk = db.Testings
.Where(t => t.id == k)
.SelectMany(t => t.Questions);
或
var cfk = db.Questions
.Where(t => t.Testing.id == k);
如果没有外键关系,则需要像其他人建议的那样进行加入。
var cfk = db.Testings
.Where(t => t.id == k)
.Join(db.Questions, t => t.ItemId, q => q.ItemId, (t, q) => q);