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

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

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 оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Методы прогнозирования национальной экономики, их особенности, классификация В настоящее время по оценке специалистов насчитывается свыше 150 различных методов прогнозирования, но на практике, в качестве основных используется около 20 методов...

Методы анализа финансово-хозяйственной деятельности предприятия   Содержанием анализа финансово-хозяйственной деятельности предприятия является глубокое и всестороннее изучение экономической информации о функционировании анализируемого субъекта хозяйствования с целью принятия оптимальных управленческих...

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

Расчет концентрации титрованных растворов с помощью поправочного коэффициента При выполнении серийных анализов ГОСТ или ведомственная инструкция обычно предусматривают применение раствора заданной концентрации или заданного титра...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

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