Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
与多对多关系相关的Linq查询_Linq_Entity Framework_Visual Studio 2012 - Fatal编程技术网

与多对多关系相关的Linq查询

与多对多关系相关的Linq查询,linq,entity-framework,visual-studio-2012,Linq,Entity Framework,Visual Studio 2012,我正试图编写一个LINQ查询,但不知何故它不起作用,下面是查询 var Table3Qry = from LoginTable in db.Logins from ServerTable in LoginTable.Servers.Where(x => x.ServerID == id) select new { LoginTable.passwd, LoginTable.LoginID }; 表结构是 Login - Passwd - Userid -

我正试图编写一个LINQ查询,但不知何故它不起作用,下面是查询

var Table3Qry =
   from LoginTable in db.Logins 
   from ServerTable in LoginTable.Servers.Where(x => x.ServerID == id) 
   select new { LoginTable.passwd, LoginTable.LoginID };
表结构是

Login

 - Passwd
 - Userid 
 - Loginid

Server

 - Serverid
 - Servername

ServerLogins

 - Serverid
 - Loginid

我想在
Login
表中找到特定
ServerID
(在查询中命名为
id
)的所有
Password

按id筛选服务器,然后从每个服务器登录中选择所有密码:

var passwords =
     db.Servers.Where(s => s.ServerID == id)
       .SelectMany(s => s.Logins.Select(l => new { l.Passwd, l.LoginId }));
查询语法:

var passwords = from s in db.Servers
                where s.ServerID == id
                from l in s.Logins
                select new { l.Passwd, l.LoginId };
如果您从登录表开始:

var passwords = from l in db.Logins
                where l.Servers.Any(s => s.ServerID == id)
                select new { l.Passwd, l.LoginId };

“它不工作”-请你澄清一下这句话-你有错误吗?或者结果不是您期望的结果,等等。否则没有人能回答这个问题。每次它返回未定义的值时,我都没有收到任何错误。代码块可能有问题,请检查编辑的问题。@SalmanShaykh我回滚了您的编辑。你已经完全改变了你原来的代码谢谢!!你说得很对,第三个问题对我有用再次感谢:)