2016-08-23 3 views
1

Я новичок в linq для sql и у меня есть сложный SQL-запрос.Комплексный запрос SQL Server к запросу LINQ to SQL C#

Мой запрос SQL Server делает это в ближайшее время: у меня есть 2 таблицы, продукт (a) и товарный блок (b). Продукт имеет сумму и вторую сумму, которая предупреждает клиента о том, сколько элементов все еще выполняется.

В «а» у нас есть 10 статей, если мы заказываем 5. Тогда таблицы второго значения суммы 5. Если мы заказываем больше: 5 = 5 + более

Так я пишу T-SQL здесь. Я хочу Linq To Sql

UPDATE a 
SET a.secondamount = a.secondamount + b.orderedamount 
INNER JOIN b ON a.productid == b.productid 
WHERE b.status = false ; 
+0

Вы пишете уже SQL-запрос. Вы хотите перевести это в LINQ? –

+0

Да, этот фрагмент кода, который я использовал в своей старой программе. Прямо сейчас я должен заменить каждый sqlcommand/reader и т. Д. На linq на sql. Я почти заменил все, что я застрял в этом. – bencemik95

ответ

1

Linq не используется для обновления, но и для запросов. Вы можете использовать linq, чтобы найти все записи, которые вы хотите обновить, и подготовить данные, но затем само обновление должно происходить отдельно.

var result = from itemA in a 
      join itemB in b on itemA.productId equals itemB.productId 
      where itemB.Status == false 
      select new { itemA, itemB.orderedamount }; 

foreach(var item in result) 
{ 
    //do update using item.itemA.secondAmount + item.orderedamount 
} 
+0

Gilad, извините, попытался скомпилировать ваш запрос и представил еще одну глупую ошибку. –

+0

Я имел в виду, что я нарушил свой ответ с помощью своего первого редактирования, поэтому я прошу прощения за это. –

+0

@ ИванСтоев - ах, ок, я получил его. «Equals» был просто глупой ошибкой :) ха-ха. О 'join' по сравнению с' where' - я знаю, что 'join' является правильным с точки зрения того, как исходный sql, но что произойдет, если это соединение даст более одной записи? .. Вот почему я ее изменил на 'Any' –

Смежные вопросы