Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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
C# 我可以使用join和let in linq-c吗#_C#_Linq - Fatal编程技术网

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 ...