Обновите элементы последовательности с помощью linq, не повторяя последовательность с помощью linq - PullRequest
2 голосов
/ 22 июля 2010

У меня есть запрос, как показано ниже, и я хочу обновить все элементы последовательности. но без использования foreach / для

var res = _context.tbl1.Where(/* Conditions here */);
res.//Using a method to performing changes;

Ответы [ 4 ]

2 голосов
/ 23 июля 2010

Напишите метод расширения для него

public static class IEnumerableExtensions
{
    public static void ForEach<T>(this IEnumerable<T> seq, Action<T> action)
    {
        foreach (var item in seq)
        {
            action(item);
        }
    }
}

Но обратите внимание, что под капотом вы все еще проходите - точно так же, как метод расширения Where и все остальные. Методы расширения скрывают цикл.

2 голосов
/ 22 июля 2010

Если вы спрашиваете, можете ли вы устанавливать обновления на основе linq-to-sql, как в sql, я боюсь, что вы не сможете. Вы должны либо индивидуально обновить каждый объект l2s и вызвать SubmitChanges(), когда закончите, либо вызвать ExecuteCommand() с вашим SQL-запросом.

Вот тема, которая может вас заинтересовать - http://social.msdn.microsoft.com/Forums/en-US/linqprojectgeneral/thread/0f014318-5259-43c7-8518-06948cec465e

Редактировать: На самом деле, это может вас заинтересовать - Обновление нескольких строк Linq против SQL

Если вы посмотрите, здесь есть ссылка - http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx, которая выглядит круто. Возможно, придется проверить это сам!

1 голос
/ 22 июля 2010

Вы можете написать метод расширения для IEnumerable<T>, который выполнял бы итерацию и выполнял требуемое действие, потенциально используя делегат или Func, чтобы сделать его более общим.

0 голосов
/ 22 июля 2010

Вы ищете Select?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...