linq to sql - перебрать данные таблицы и установить значение - PullRequest
2 голосов
/ 10 февраля 2010

У меня есть таблица "Пользователи" .. в нем есть столбец «ShowData»

используя linq-sql, как я могу пройти через каждого пользователя и установить для ShowData значение false для каждого пользователя ..

спасибо

Ответы [ 4 ]

6 голосов
/ 10 февраля 2010

Создать файл конструктора классов linq to sql. Затем поместите таблицу Users на поверхность конструктора.

using (TheDataContext dc = new TheDataContext)
{
  //pull all users into memory, not recommended for large tables.
  List<User> users = dc.Users.ToList();

  foreach(User theUser in users)
  {
    theUser.ShowData = false;
  }
  //send all these property changes back to the database.
  dc.SubmitChanges();
}

И чтобы защититься от понижения голосов:

using (TheDataContext dc = new TheDataContext())
{
  dc.ExecuteCommand("UPDATE Users SET ShowData = 0");
}
3 голосов
/ 10 февраля 2010

Этот пример демонстрирует, как сделать все, используя Linq.

using (MyDataContext dataContext = new MyDataContext(connectionString))
{
   dataContext.Users.ToList().ForEach(user => user.ShowData = false);

   // commit changes made to entities (generates UPDATE statements for you)
   dataContext.SubmitChanges();
}

Что происходит, это:

// IQueryable<User> (query setup)
dataContext.Users
// from IEnumerable<User> to List<User> (pull from Sql Server into memory)
.ToList()
// via enumerating list of User entities (now in memory)
.ForEach
(
   // define entity in this iteration
   user =>
      // define operation on entity
      user.ShowData = false;
);
3 голосов
/ 10 февраля 2010

Создать хранимую процедуру

CREATE PROCEDURE HideData 
AS
update Users set ShowData = 0

Используя ваш обозреватель серверов, выпустите эту процедуру в вашем Dbml

А в твоей функции:

using (CustomDataContext context= new CustomDataContext())
{
  context.HideData();
}
2 голосов
/ 10 февраля 2010

Если этот столбец находится в таблице SQL Server, просто введите этот оператор SQL:

update Users set ShowData = 0 // where ...

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

Если это таблица в памяти, вам вообще не нужен LINQ to SQL здесь.

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