Могу ли я использовать соединение с let в linq - c # - PullRequest
6 голосов
/ 30 апреля 2010
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();

Я подумал, что если бы я мог использовать ключевое слово join in let, чтобы я мог получить название продукта

1 Ответ

5 голосов
/ 30 апреля 2010

Вы можете использовать «let» только как часть выражения запроса. Если вы хотите определить отдельную переменную, просто объявите ее обычным способом. Если бы вы могли дать нам больше представления о том, что вы пытаетесь сделать, это действительно помогло бы.

РЕДАКТИРОВАТЬ: Вы можете использовать «join» в предложении «let», но только если это полное выражение запроса внутри:

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

Вы уверены, что не следует использовать объединение вместо let для начала?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...