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

最佳答案

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,并且当您针对每个Section_Data运行a时,您将只能访问与此相关的属性,因此只需从查询中删除选择部分。

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

10-06 05:24
查看更多