在ActionResult中使用ToList ForEach来更新表值

时间:2014-10-23 07:54:49

标签: c# asp.net-mvc foreach tolist

可能是另一个菜鸟错误,但我在循环中遇到更新多个值的问题。

我从表单返回一个值(日期时间 - tTS)并用于查询表。那部分工作得很好......到了一定程度。 我正在逐步建立这个,证明每个工作,并继续下一步。我开始使用返回.FirstOrDefault的查询,并且工作和更新了记录,因此查询工作正常。要检索多个项目并更新每个项目,请尝试.ToList()和foreach()...

var holidaytest = db.HolidayTest
                    .Where(x => x.TimeStamp == tTS)
                    .ToList();

foreach(var item in holidaytest)
{
    holidaytest.DecimalT = (29.5);
}

db.SaveChanges();

我已经尝试了上述的多种变体,但在.DecimalT下继续得到一条红线: 'System.Collections.Generic.List'不包含'DecimalT'的定义,也没有扩展方法'DecimalT'接受类型'System.Collections.Generic.List'的第一个参数'(你是否缺少using指令)或汇编参考?) 我正在使用:

using HolidaysDev.Models
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

仅供参考,我试图将DecimalT设置为(29.5)进行测试,我将更改此阶段正常工作 - 认为使用静态值更容易。

1 个答案:

答案 0 :(得分:1)

你在foreach中使用了错误的变量:

foreach(var item in holidaytest)
{
    holidaytest.DecimalT = (29.5); // This is the list!
}

您需要使用item

foreach(var item in holidaytest)
{
    item.DecimalT = 29.5; // This is an item in the list and you don't need the brackets.
}

这是一个简单,完整的版本:

foreach(var item in db.HolidayTest.Where(x => x.TimeStamp == tTS))
{
    item.DecimalT = 29.5;
}