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关键字中使用连接,那么我可以获得产品名称
答案 0 :(得分:5)
您只能将“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 ...
你确定你不应该使用联接而不是让我们开始吗?