2014-01-31 101 views
0

我有對象的列表,我想更新對象的Break屬性,其中breakflag = 1與其下一個和上一個記錄。更新列表對象

class EmployeeHour 
{ 
    int recordID{get;set;} 
    string Break{get;set;} 
    DateTime TimeIn {get;set;} 
    DateTime TimeOut {get;set;} 
    int BreakFlag{get;set;} 
} 

List<EmployeeHour> listEH=(from item in employeeHoursList 
         where item.BreakFlag==1  
         select item).Foreach(itme=>item.Break=(employeeHoursList[i].Timeout-employeeHoursList[i].TimeIn).ToString()).ToList(); 

所以在這裏我只是想設置與時間差異的休息屬性。在TimeIn和TimeOut之間,只對那些標誌爲breakflag的人來說。以及該對象的TimeOut,其中BeakFlag == 1和TimeIn在列表中該對象旁邊。

+0

您有什麼問題? – RononDex

+1

Linq用於查詢不更新數據。順便說一下'ForEach'不是來自Linq – wudzik

+1

「更新其下一個和上一個記錄」是什麼意思? –

回答

3

這聽起來像你正在嘗試做的是這樣的:

List<EmployeeHour> listEH= 
    (from item in employeeHoursList 
    where item.BreakFlag == 1  
    select item).ToList(); 
listEH.ForEach(item => item.Break = (item.TimeOut - item.TimeIn).ToString()); 

這將修改當前item.Break與當前項目的.TimeOut.TimeIn


更新從更新的問題,好像什麼都想則會使用以前或在列表中的下一個項目修改item.Break。在這種情況下,你可能根本不應該使用Linq或ForEach。一個簡單的for循環會更清潔(假設employeeHoursListList<T>,數組或類似):

for(var i = 0; i < employeeHoursList.Count; i++) 
{ 
    if (employeeHoursList[i].BreakFlag == 1 && (i + 1) < employeeHoursList.Count) 
    { 
     employeeHoursList[i].Break = (employeeHoursList[i].TimeOut - employeeHoursList[i + 1].TimeIn).ToString() 
    } 
}