C# 我可以使用join和let in linq-c吗#
我想试着做这样的事情C# 我可以使用join和let in linq-c吗#,c#,linq,C#,Linq,我想试着做这样的事情 let order= _relationContext.Orders .Where(x => x.OrderNumber == orderNo) .Select(x => new { x.OrderNo, x.OrderDate }).Single() 这可能吗 更新1: 我当前的代码 let order = _relationContext.Orders join _relationContext.Pro
let order= _relationContext.Orders
.Where(x => x.OrderNumber == orderNo)
.Select(x => new { x.OrderNo, x.OrderDate }).Single()
这可能吗
更新1:
我当前的代码
let order = _relationContext.Orders join _relationContext.Products
.Where(x => x.OrderNumber == orderNo && x.ProductId == Products.ProductID)
.Select(x => new { x.OrderNo, x.OrderDate }).Single()
我想,如果我可以使用join-in-let关键字来获取产品名称,那么只能将“let”用作查询表达式的一部分。如果您想定义一个单独的变量,只需以常规方式声明它。如果你能让我们知道你想做什么,那会很有帮助的
编辑:您可以在“let”子句中使用“join”,但只有在以下情况下才可以使用“join”:
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来开始吗?Jon:我之所以使用我的思考过程是因为let orderno=(string)c.Element(“orderno”)从我的xml文件中获取diff orderNo-这样我想我可以在let中执行联接。@uno:它怎么能给你一个与xml中不同的订单号?Jon:我的意思是-xml返回5个订单详细信息-这意味着5个订单号。因此,我选择按照示例中的方式进行编码。如果订单中订购的产品不同,我正在寻找一种解决方案,试图在let语句中使用join,但有些东西告诉我我走错了路。@uno:老实说,这感觉不太正常。不幸的是,我现在没有足够的时间来了解你的情况:(Jon:np。也许我可以按照你个人资料中的地址给你发电子邮件?这样以后,如果你有时间处理我的琐事,你可以启发我。这是我的测试项目-尝试学习新东西
from foo in foos
let bar = (from x in baz join y in qux on x.Id equals y.Id select ...)
select ...