Реферат Курсовая Конспект
From, let, where, join и orderby - раздел Программирование, C# Спецификация языка Версия 4.0 Выражение за...
|
Выражение запроса с вторым предложением from, за которым следует предложение select,
from x1 in e1
from x2 in e2
select v
переводится в
( e1 ) . SelectMany( x1 => e2 , ( x1 , x2 ) => v )
Выражение запроса с вторым предложением from, за которым следует предложение, отличное от select,
from x1 in e1
from x2 in e2
…
переводится в
from * in ( e1 ) . SelectMany( x1 => e2 , ( x1 , x2 ) => new { x1 , x2 } )
…
Выражение запроса с продолжением let
from x in e
let y = f
…
переводится в
from * in ( e ) . Select ( x => new { x , y = f } )
…
Выражение запроса с продолжением where
from x in e
where f
…
переводится в
from x in ( e ) . Where ( x => f )
…
Выражение запроса с предложением join без into, за которым следует предложение select,
from x1 in e1
join x2 in e2 on k1 equals k2
select v
переводится в
( e1 ) . Join( e2 , x1 => k1 , x2 => k2 , ( x1 , x2 ) => v )
Выражение запроса с предложением join без into, за которым следуем предложение, отличное от select,
from x1 in e1
join x2 in e2 on k1 equals k2
…
переводится в
from * in ( e1 ) . Join(
e2 , x1 => k1 , x2 => k2 , ( x1 , x2 ) => new { x1 , x2 })
…
Выражение запроса с предложением join и с предложением into, за которым следует предложение select,
from x1 in e1
join x2 in e2 on k1 equals k2 into g
select v
переводится в
( e1 ) . GroupJoin( e2 , x1 => k1 , x2 => k2 , ( x1 , g ) => v )
Выражение запроса с предложением join и с предложением into, за которым следует предложение, отличное от select,
from x1 in e1
join x2 in e2 on k1 equals k2 into g
…
переводится в
from * in ( e1 ) . GroupJoin(
e2 , x1 => k1 , x2 => k2 , ( x1 , g ) => new { x1 , g })
…
Выражение запроса с продолжением orderby
from x in e
orderby k1 , k2 , … , kn…
переводится в
from x in ( e ) .
OrderBy ( x => k1 ) .
ThenBy ( x => k2 ) .
… .
ThenBy ( x => kn )
…
Если в предложении упорядочения указывается показатель направления descending, вместо него вызывается оператор OrderByDescending или ThenByDescending.
В следующих переводах предполагается, что в каждом выражении запроса нет предложений let, where, join и orderby, и есть не больше одного начального предложения from.
В примере
from c in customers
from o in c.Orders
select new { c.Name, o.OrderID, o.Total }
переводится в
customers.
SelectMany(c => c.Orders,
(c,o) => new { c.Name, o.OrderID, o.Total }
)
В примере
from c in customers
from o in c.Orders
orderby o.Total descending
select new { c.Name, o.OrderID, o.Total }
переводится в
from * in customers.
SelectMany(c => c.Orders, (c,o) => new { c, o })
orderby o.Total descending
select new { c.Name, o.OrderID, o.Total }
конечный перевод имеет вид
customers.
SelectMany(c => c.Orders, (c,o) => new { c, o }).
OrderByDescending(x => x.o.Total).
Select(x => new { x.c.Name, x.o.OrderID, x.o.Total })
где x — идентификатор, созданный компилятором, который в других условиях является невидимым и недоступным.
В примере
from o in orders
let t = o.Details.Sum(d => d.UnitPrice * d.Quantity)
where t >= 1000
select new { o.OrderID, Total = t }
переводится в
from * in orders.
Select(o => new { o, t = o.Details.Sum(d => d.UnitPrice * d.Quantity) })
where t >= 1000
select new { o.OrderID, Total = t }
конечный перевод имеет вид
orders.
Select(o => new { o, t = o.Details.Sum(d => d.UnitPrice * d.Quantity) }).
Where(x => x.t >= 1000).
Select(x => new { x.o.OrderID, Total = x.t })
где x — идентификатор, созданный компилятором, который в других условиях является невидимым и недоступным.
В примере
from c in customers
join o in orders on c.CustomerID equals o.CustomerID
select new { c.Name, o.OrderDate, o.Total }
переводится в
customers.Join(orders, c => c.CustomerID, o => o.CustomerID,
(c, o) => new { c.Name, o.OrderDate, o.Total })
В примере
from c in customers
join o in orders on c.CustomerID equals o.CustomerID into co
let n = co.Count()
where n >= 10
select new { c.Name, OrderCount = n }
переводится в
from * in customers.
GroupJoin(orders, c => c.CustomerID, o => o.CustomerID,
(c, co) => new { c, co })
let n = co.Count()
where n >= 10
select new { c.Name, OrderCount = n }
конечный перевод имеет вид
customers.
GroupJoin(orders, c => c.CustomerID, o => o.CustomerID,
(c, co) => new { c, co }).
Select(x => new { x, n = x.co.Count() }).
Where(y => y.n >= 10).
Select(y => new { y.x.c.Name, OrderCount = y.n)
где x и y — идентификаторы, созданные компилятором, которые в других условиях являются невидимыми и недоступными.
В примере
from o in orders
orderby o.Customer.Name, o.Total descending
select o
имеет конечный перевод
orders.
OrderBy(o => o.Customer.Name).
ThenByDescending(o => o.Total)
– Конец работы –
Эта тема принадлежит разделу:
Microsoft, Windows, Visual Basic, Visual C# и Visual C++ являются охраняемыми товарными знаками корпорации Майкрософт в США и других странах...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: From, let, where, join и orderby
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов