如何使用LINQ更新数据库? LINQ到SQL

时间:2016-08-20 03:20:12

标签: c# linq linq-to-sql

我正在尝试通过Linq-to-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才能访问实体?如何修改查询以便我可以访问实体来更新数据库?

2 个答案:

答案 0 :(得分:1)

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();

此查询将仅提供类型为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();

答案 1 :(得分:0)

试试这个:

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