C# “如何从表中检索数据”;a「;基于表中的不同值;b";
上面的Linq返回多个包含不同ItemID的行。 现在,我正在尝试从包含在上述linq中返回的所有ItemID的Questions表中检索所有行。正如所料,以下代码不起作用。有人能帮我处理这个逻辑吗?如果是一个小的逻辑错误,请更正我的代码C# “如何从表中检索数据”;a「;基于表中的不同值;b";,c#,sql,.net,linq,C#,Sql,.net,Linq,上面的Linq返回多个包含不同ItemID的行。 现在,我正在尝试从包含在上述linq中返回的所有ItemID的Questions表中检索所有行。正如所料,以下代码不起作用。有人能帮我处理这个逻辑吗?如果是一个小的逻辑错误,请更正我的代码 var c = from p in db.Testings where p.id == Convert.ToInt32(k) select new{p.ItemId};` 比如: var cfk = from p in db
var c = from p in db.Testings
where p.id == Convert.ToInt32(k)
select new{p.ItemId};`
比如:
var cfk = from p in db.Questions
where p.ItemId == Convert.ToInt32(c)
select p;
GridView4.DataSource = cfk;
GridView4.DataBind();
可以使用LINQ执行内部联接
如果可能的话,我可能会在Get()期间在Db端进行连接。根据您选择的“cfk”作为第二个变量名,我猜您已经设置了数据库,使得Questions.ItemId是测试的外键,其中Testings.ItemId是Testings的主键,Testings.id是其他一些非键列 如果是这样,你可以说:
var cfk = from p in db.Questions
where c.Contains(p.ItemId)
select p;
或
如果没有外键关系,您需要按照其他人的建议加入,例如
var cfk = db.Questions
.Where(t => t.Testing.id == k);
你需要“加入”表格。没有其他方法吗?我的意思不是说制作一张表格。我的意思是“加入”。这是SQL中用来表示正在从两个表中读取数据的术语。请看这里:
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);