From, let, where, join и orderby
Выражение запроса с вторым предложением from, за которым следует предложение select, from x1 in e1 переводится в (e1). SelectMany(x1 => e2, (x1, x2) => v) Выражение запроса с вторым предложением from, за которым следует предложение, отличное от select, from x1 in e1 переводится в from * in (e1). SelectMany(x1 => e2, (x1, x2) => new { x1, x2 }) Выражение запроса с продолжением let from x in e переводится в from * in (e). Select (x => new { x, y = f }) Выражение запроса с продолжением where from x in e переводится в from x in (e). Where (x => f) Выражение запроса с предложением join без into, за которым следует предложение select, from x1 in e1 переводится в (e1). Join(e2, x1 => k1, x2 => k2, (x1, x2) => v) Выражение запроса с предложением join без into, за которым следуем предложение, отличное от select, from x1 in e1 переводится в from * in (e1). Join( Выражение запроса с предложением join и с предложением into, за которым следует предложение select, from x1 in e1 переводится в (e1). GroupJoin(e2, x1 => k1, x2 => k2, (x1, g) => v) Выражение запроса с предложением join и с предложением into, за которым следует предложение, отличное от select, from x1 in e1 переводится в from * in (e1). GroupJoin( Выражение запроса с продолжением orderby from x in e переводится в from x in (e). Если в предложении упорядочения указывается показатель направления descending, вместо него вызывается оператор OrderByDescending или ThenByDescending. В следующих переводах предполагается, что в каждом выражении запроса нет предложений let, where, join и orderby, и есть не больше одного начального предложения from. В примере from c in customers переводится в customers. В примере from c in customers переводится в from * in customers. конечный перевод имеет вид customers. где x — идентификатор, созданный компилятором, который в других условиях является невидимым и недоступным. В примере from o in orders переводится в from * in orders. конечный перевод имеет вид orders. где x — идентификатор, созданный компилятором, который в других условиях является невидимым и недоступным. В примере from c in customers переводится в customers.Join(orders, c => c.CustomerID, o => o.CustomerID, В примере from c in customers переводится в from * in customers. конечный перевод имеет вид customers. где x и y — идентификаторы, созданные компилятором, которые в других условиях являются невидимыми и недоступными. В примере from o in orders имеет конечный перевод orders. Select Выражение запроса вида from x in e select v переводится в (e). Select (x => v) за исключением случая, когда v является идентификатором x, тогда перевод имеет вид просто (e) Например from c in customers.Where(c => c.City == “London”) переводится просто в customers.Where(c => c.City == “London”)
|