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。