使用linq-to-sql更新记录列表

时间:2012-09-20 17:11:04

标签: c# linq-to-sql

我有一个包含2列的表:FruitID,FruitSize。我想编写一个查询,其中包含FruitIDs和FruitSize列表,并为所有水果设置新的FruitSize。

这是我到目前为止所做的:

public void ChangeFruitSizes(List<long> TheFruitIDs, long NewFruitSize)
{
   using (SomeDC MyDC = new SomeDC())
   {
      var TheFruits = (from f in MyDC.Fruits
                       where TheFruitIDs.Contains(f.FruitID)
                       select f).ToList();

      foreach (Fruits f in TheFruits)
      {
          f.FruitSize = NewFruitSize;
      }

      MyDC.SubmitChanges();

   }
}

目前还没有窃听,但数据库中的字段未更新。谢谢你的建议。

2 个答案:

答案 0 :(得分:2)

要以更简洁的方式编写此内容,您可以在下面的列表中尝试ForEach()

using (SomeDC MyDC = new SomeDC())
{
    (from f in MyDC.Fruits
               where TheFruitIDs.Contains(f.FruitID)
               select f).ToList().ForEach(F => F.FruitSize = NewFruitSize);

    MyDC.SubmitChanges();

}

答案 1 :(得分:1)

只看代码一切正确。可能错误在于未显示的内容:模型。我怀疑你没有定义主键。在ID字段上定义主键并重新创建模型(从设计器中删除表并将其添加回来)。