2014-10-23 8 views
1

을 업데이트하는 것은 아마도 신참 루틴이지만 실수로 여러 값을 업데이트하는 데 문제가 있습니다.ToList ForEach를 사용하여 ActionResult에서 테이블 값

양식에서 값 (날짜 시간 - 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 '에 대한 정의가없고'System.Collections.Generic.List '유형의 첫 번째 인수를 허용하는 확장 메서드'DecimalT '가 없습니다 (using 지시문이나 어셈블리 참조가 누락 되었습니까? ?) 내가 사용하고 있습니다 :

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

그냥 참조를 위해, 나는 (29.5) F에 DecimalT을 설정하려고 또는 테스트를 통해이 단계가 올바르게 작동하는 것으로 바꿀 것입니다. 정적 값으로 작업하는 것이 더 쉬웠다 고 생각했습니다.

답변

1

당신은 당신의 foreach 문에 잘못된 변수를 사용하고 있습니다 :

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

당신은 item를 사용해야합니다. 아아 ... 다시,

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

그래서 간단한 :

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

여기에 간단한, 완전한 버전입니다! 고맙습니다. – PawnSacrifice