Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

From, let, where, join и orderby





Выражение запроса с вторым предложением 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)

Select

Выражение запроса вида

from x in e select v

переводится в

(e). Select (x => v)

за исключением случая, когда v является идентификатором x, тогда перевод имеет вид просто

(e)

Например

from c in customers.Where(c => c.City == “London”)
select c

переводится просто в

customers.Where(c => c.City == “London”)







Дата добавления: 2015-09-07; просмотров: 422. Нарушение авторских прав; Мы поможем в написании вашей работы!




Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Значення творчості Г.Сковороди для розвитку української культури Важливий внесок в історію всієї духовної культури українського народу та її барокової літературно-філософської традиції зробив, зокрема, Григорій Савич Сковорода (1722—1794 pp...

Краткая психологическая характеристика возрастных периодов.Первый критический период развития ребенка — период новорожденности Психоаналитики говорят, что это первая травма, которую переживает ребенок, и она настолько сильна, что вся последую­щая жизнь проходит под знаком этой травмы...

РЕВМАТИЧЕСКИЕ БОЛЕЗНИ Ревматические болезни(или диффузные болезни соединительно ткани(ДБСТ))— это группа заболеваний, характеризующихся первичным системным поражением соединительной ткани в связи с нарушением иммунного гомеостаза...

Решение Постоянные издержки (FC) не зависят от изменения объёма производства, существуют постоянно...

Studopedia.info - Студопедия - 2014-2025 год . (0.009 сек.) русская версия | украинская версия