linq to sql - 循环遍历表数据和设置值

时间:2010-02-10 15:48:43

标签: c# linq-to-sql

我有一张桌子“用户”.. 它有一个“ShowData”列

使用linq-sql如何遍历每个用户并为每个用户将ShowData设置为false ..

感谢

4 个答案:

答案 0 :(得分:6)

创建一个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");
}

答案 1 :(得分:3)

创建存储过程

CREATE PROCEDURE HideData 
AS
update Users set ShowData = 0

在Dbml

中使用服务器资源管理器下拉列表

在你的功能中:

using (CustomDataContext context= new CustomDataContext())
{
  context.HideData();
}

答案 2 :(得分:3)

此示例演示了如何使用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 :(得分:2)

如果此列位于SQL Server表中,请发出以下SQL语句:

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

甚至不要考虑将所有用户加载到内存中,设置单个属性然后将它们保存到数据库中。

如果这是一个内存表,那么你根本不需要LINQ to SQL。