2010-04-30 8 views
6
let order= _relationContext.Orders 
      .Where(x => x.OrderNumber == orderNo) 
      .Select(x => new { x.OrderNo, x.OrderDate }).Single() 

quiero tratar de hacer algo como estopuedo usar unirse con let en LINQ - C#

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

Es esto posible?

ACTUALIZACIÓN 1: Mi código actual

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(); 

que pensé que si podía usar una combinación en palabra clave let para que pudiera obtener el nombre del producto

Respuesta

5

Usted sólo puede utilizar "dejar" como parte de una expresión de consulta. Si quiere definir una variable separada, solo debe declararla de la manera normal. Si pudieras darnos más idea de lo que estás tratando de hacer, eso realmente ayudaría.

Editar: puede uso "unir" dentro de un "let" cláusula, pero sólo si se trata de una expresión de consulta completa en el interior:

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

¿Estás seguro de que no debe utilizar una combinación vez de un vamos a empezar?

+0

Jon: Publiqué mi código actual en la Actualización 1 – uno

+0

Jon: razón por la que fui con mi proceso de pensamiento fue que dejar orderno = (cadena) c.Element ("orderno") me da diff orderNo desde mi archivo xml - por lo que este forma en que pensé que podría hacer una unión en un let. – uno

+0

@uno: ¿Cómo puede estar dando un número de pedido diferente al que está en el XML? –