我有一张桌子“用户”.. 它有一个“ShowData”列
使用linq-sql如何遍历每个用户并为每个用户将ShowData设置为false ..
感谢
答案 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。