我可以在linq中使用join with let – c#

let order= _relationContext.Orders .Where(x => x.OrderNumber == orderNo) .Select(x => new { x.OrderNo, x.OrderDate }).Single() 

我想尝试做这样的事情

 let order = _relationContext.Orders join _relationContext.Products .Where(x => x.OrderNumber == orderNo && x.ProductId == Products.ProductID) .Select(x => new { x.OrderNo, x.OrderDate }).Single() 

这有可能吗?

更新1:我目前的代码

  var q = from c in sXDocument.Descendants("prop") let handle = c.Element("handle") let resultref = handle != null ? handle.Element("dsref") : null let orderno = (string)c.Element("orderno") let orderdetail = _relationContext.Order .Where(x => x.orderno == orderno) .Select(x => new { x.ProductID, x.OrderDate }).Single() select new Order() { OrderNo = orderno, Handle = resultref != null ? (string)resultref.Attribute("handle") : null, Title = //Need ProductName, ProductID = orderdetail.ProductID.ToString(), }; return q.ToList(); 

我想如果我可以在let关键字中使用连接,那么我可以得到产品名称

您只能将“let”用作查询表达式的一部分。 如果要定义单独的变量,只需以正常方式声明它。 如果你能让我们更多地了解你想要做什么,那真的会有所帮助。

编辑:您可以在“let”子句中使用“join”,但前提是它是一个完整的查询表达式:

 from foo in foos let bar = (from x in baz join y in qux on x.Id equals y.Id select ...) select ... 

你确定你不应该使用加入而不是让我们开始吗?