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

我有一个表“用户”..它有一个列“ShowData”

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

谢谢

创建一个linq to sql类设计器文件。 然后将Users表放到设计器表面上。

using (TheDataContext dc = new TheDataContext) { //pull all users into memory, not recommended for large tables. List users = dc.Users.ToList(); foreach(User theUser in users) { theUser.ShowData = false; } //send all these property changes back to the database. dc.SubmitChanges(); } 

并防止自己反对downvoting:

 using (TheDataContext dc = new TheDataContext()) { dc.ExecuteCommand("UPDATE Users SET ShowData = 0"); } 

创建存储过程

 CREATE PROCEDURE HideData AS update Users set ShowData = 0 

在Dbml中使用服务器资源管理器下拉列表中的此过程

在你的function:

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

此示例演示如何使用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 (query setup) dataContext.Users // from IEnumerable to List (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; ); 

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

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

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

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