рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

From, let, where, join и orderby

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)

– Конец работы –

Эта тема принадлежит разделу:

C# Спецификация языка Версия 4.0

Microsoft, Windows, Visual Basic, Visual C# и Visual C++ являются охраняемыми товарными знаками корпорации Майкрософт в США и других странах...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: From, let, where, join и orderby

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Pragma warning
Директива #pragma warning используется для о

System.ValueType
Все типы значений неявно наслед

Decimal
Тип decimal представляет собой 128-разряд

Checked и unchecked
Состояние определенного присва

Break, continue и goto
Состояние определенного присва

Try-catch
Для оператора stmt в форме try блок_try catch(...

Try-finally
Для оператора stmt в форме try блок_try finally &

Try-catch-finally
Анализ определенного присваива

Foreach
Для оператора foreach stmt в форме foreach ( неуп

Checked и unchecked
Операторы checked и unchecked используются для

Groupby
Выражение запроса вида from x in e group v by k п

Foreach
Оператор foreach осуществляет перечиl

Continue
Оператор continue начинает новую итера

Checked и unchecked
Операторы checked и unchecked используются для

Using alias
Директива_using_alias вводит идентифика&

Using namespace
Директива_using_namespace импортирует типы, &#

Partial
Модификатор partial используется для

Volatile
Если объявление_поля включает м

MoveNext
Метод MoveNext объекта перечислителя и

Current
На свойство Current объекта перечисли

Dispose
Метод Dispose используется для очистк

GetEnumerator
Перечислимый объект предоставл

Partial
Модификатор partial указывает, что объ

System.Array
Тип System.Array является абстрактным базо

Partial
Модификатор partial указывает, что дан

System.Enum
Тип System.Enum — это абстрактный базовый к

System.Exception
Класс System.Exception является базовым типом &

AttributeUsage
Атрибут AttributeUsage используется для опи

Obsolete
Атрибут Obsolete используется для поме

COM и Win32
Исполняющая среда .NET предоставля&

IndexerName
Индексаторы реализованы в .NET с пом

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги