Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 sql 2 linq2sql  [new]
tual
Member

Откуда:
Сообщений: 531
Не смог как-то найти онлайн конвертера

Помогите перевести в method chain

SELECT	COUNT (ri.SentToDispatcherUserId)					
			FROM [ReceivedSupplierInvoice] ri WITH(NOLOCK)
			INNER JOIN 	@Dispatchers d 
			ON ri.SentToDispatcherUserId = d.DispatcherGuid
			JOIN [ReceivedSupplierInvoiceEmail] em
			ON ri.ReceivedSupplierInvoiceEmailId = em.ReceivedSupplierInvoiceEmailId
			WHERE 
				ri.SentToDispatcherDate IS NOT NULL
				AND ri.IsDeleted != 1
				AND em.IsProcessed = 1	


Спасибо
31 мар 14, 17:58    [15812867]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
tual
Member

Откуда:
Сообщений: 531
@Dispatchers это в коде по сути List<SomeClass>
31 мар 14, 17:59    [15812872]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
А в чем беде? list_of_ids.Contains(SentToDispatcherUserId)
31 мар 14, 18:58    [15813196]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
tual
Member

Откуда:
Сообщений: 531
надо весь запрос перевести
31 мар 14, 19:15    [15813272]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Даже не знаю... сработает ли
List<SomeClass> Dispatchers =...;
var ids = Dispatchers.Select(rws => rws.DispatcherGuid).ToArray();

ReceivedSupplierInvoice.Where(mr => mr.SentToDispatcherDate != null && mr.IsDeleted != 1 && ids.Contains(mr.SentToDispatcherUserId))
				.Join(ReceivedSupplierInvoiceEmail.Where(sr => sr.IsProcessed == 1 ) , 
								ri => ri.ReceivedSupplierInvoiceEmailId, 
								em => em.ReceivedSupplierInvoiceEmailId, 
								(ri, em) => new {ri.SentToDispatcherUserId} ).Count();
31 мар 14, 19:49    [15813352]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
tual
Member

Откуда:
Сообщений: 531
спасибо :)
31 мар 14, 20:09    [15813407]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1879
buser,

будет работать, пока в Dispatchers будет меньше 2100? записей))
31 мар 14, 22:57    [15813841]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Lelouch, ну не на чем проверить мене :) писал в блокнотике... одно точно скажу - EF в runtim'е плюнет известной ошибкой...
1 апр 14, 11:16    [15814960]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1879
buser,

там все тривиально. Contains с коллекцией превратится в кучу Where, а у MS SQL ограничение на 2100? параметров в запросе )
1 апр 14, 13:50    [15815893]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Lelouch, в Linq2sql он превратится в In
Про параметры я не понял... им неоткуда там взяться... в худшем случае будет уева туча запросов... :) Или я не прав?
1 апр 14, 15:03    [15816323]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1879
buser,

Вот тут ответ: http://social.msdn.microsoft.com/Forums/en-US/b5e89594-f638-46de-9ffd-4b07ed28ec68/support-for-ienumerablecontains?forum=adonetefx

Даже если он и превратится в IN (хотя лично у меня в L2S это превращалось в Where), то это будет IN с числом параметров равным количеству элементов коллекции. Если элементов коллекции будет больше 2100, то провайдет MS SQL выдаст ошибку.
1 апр 14, 15:50    [15816729]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Lelouch, и точно... все элементы списка объявляет аки параметры и пихает в In с соответствующей ошибкой. Забавно...
1 апр 14, 16:21    [15817095]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
ViPRos
Member

Откуда:
Сообщений: 9883
buser,

не забавно, а пииичально
1 апр 14, 16:36    [15817241]     Ответить | Цитировать Сообщить модератору
 Re: sql 2 linq2sql  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
ViPRos, ну... ибо нефик... В любом случае, особо пытливые могут вооружиться напильником и исправить этот вопиющий косяк...
1 апр 14, 16:44    [15817309]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить