2016-08-20 59 views
2

我想通过Linq-to-SQL更新数据库。如何使用LINQ更新数据库? Linq到SQL

我有一个表命名Staff_Time_TBL其中有9列。我正在尝试更新潜在多行的单列记录。

我的LINQ查询如下。它从特定日期到另一个指定日期从单个员工编号中获取列Section_Data的数据。

DatabaseDataContext Sql = new DatabaseDataContext(ConnectionString); 

var getList = Sql.Staff_Time_TBLs.Where(
       staff => staff.Staff_No == staffNo && 
       staff.Date_Data >= dateFrom && 
       staff.Date_Data <= dateTo) 
       .Select(staff => staff.Section_Data).ToList(); 

我然后将使用一个foreach循环迭代虽然收集和更新数据库,

foreach (var item in getList) 
       {      
        item.Section_Data = "myValue"; 
       } 
     Sql.SubmitChanges(); 

的问题是,这下面,实体Section_Data不存在。

item.Section_Data 

所以,我想我没有正确地把LINQ放在一起能够访问实体?如何修改查询以便我可以访问实体来更新数据库?

+0

我猜,而是因为你选择'staff.Section_Data',这是不太可能,你可以再做'item.Section_Data'。也许只是删除代码中的“选择(...)”部分? – DavidG

+0

@DavidG,谢谢你是对的。非常感谢帮忙。 – KyloRen

回答

1
​​

该查询会给你唯一类型Section_Data的数据,因为您选择Section_Data,当您为每个上运行,你将能够访问有关,只有属性,因此只需取出从查询中选择部分。

var getList = Sql.Staff_Time_TBLs.Where(
       staff => staff.Staff_No == staffNo && 
       staff.Date_Data >= dateFrom && 
       staff.Date_Data <= dateTo) 
       .ToList(); 

现在您将可以访问其中的属性。

foreach (var item in getList) 
{      
    item.Section_Data = "myValue"; 
} 
Sql.SubmitChanges(); 
+0

这样做。非常感谢,最近几天我一直在摆弄这件事。 – KyloRen

0

尝试写代码:

enter code here 
var getList = Sql.Staff_Time_TBLs.Where(
      staff => staff.Staff_No == staffNo && 
      staff.Date_Data >= dateFrom && 
      staff.Date_Data <= dateTo) 
      .ToList();