Sql server 正确的LINQtoSQL语法是什么

Sql server 正确的LINQtoSQL语法是什么,sql-server,select,linq-to-sql,Sql Server,Select,Linq To Sql,此语句的正确LINQ TO SQL或SQL server语法是什么 Select ProductName from Products where ProductId = (Select ProductId from OrderAndProducts where OrderID = 5 ) 在Linq到Sql中 int orderId = 5; var result = (From p in con

此语句的正确LINQ TO SQL或SQL server语法是什么

Select ProductName
from Products 
where ProductId = (Select ProductId 
                   from OrderAndProducts        
                   where OrderID = 5 )
在Linq到Sql中

int orderId = 5;

var result = (From p in context.Products
join op in context.OrderAndProducts on p.ProductId equals op.ProductId
where op.OrderId == orderId
select p.ProductName).ToList();
context将是来自linqToSql的数据上下文


我不太清楚您所说的SQL Server语法是什么意思-该查询还没有工作吗?

这里没有理由执行子查询,因为这在逻辑上是一个联接。见安德鲁的答案。我会用
从产品p、订单和产品o中选择p.ProductName,其中p.ProductID=o.ProductID和OrderID=5
可能会添加
int-OrderID=5
并将
其中op.OrderID==5
更改为
其中op.OrderID==OrderID
,以对其进行一点概括。我的意思是在sql server上编写新查询的sql语法。但是当我使用它一次时,你的解决方案是有效的,但是如果我尝试向订单添加一个新产品,i gor fail msg“序列包含多个元素”你的意思是有多个订单与一个产品关联吗?该查询应该只返回一个项目,或者默认值为NULL,因此我不确定您是如何获得该消息的,即订单与多个产品的关联。每次我向该订单添加新产品时,都应该运行该查询假设建立了关联,您应该能够消除此处的显式连接,并将其保留在您的模型中。因此
var result=来自context.Products中的p.OrderAndProducts.Any(op=>op.orderaid==orderaid)选择p.ProductName