Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “如何从表中检索数据”;a「;基于表中的不同值;b";_C#_Sql_.net_Linq - Fatal编程技术网

C# “如何从表中检索数据”;a「;基于表中的不同值;b";

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

上面的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.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);