2016-09-20 73 views
-1

我使用下面的LINQ查詢LINQ查詢中收集

(from item in context.Target.Transaction 
where item.Month >= detailsDaily.Month && item.Month <= parameter.Month 
select item.ProposalNumber).Sum(); 

得到的ProposalNumber之和的值設置現在我想將價值ProposalNumber設置爲這些在0以上月爲我所用的選擇。請建議應該爲LINQ查詢什麼?

+3

LINQ是** NOT **用於更新數據。如果你有一組你想更新的結果,那麼你應該遍歷它們並更新你想要更改的屬性......當然,你需要確保你有一個參考原始的,而不是副本你試圖修改的對象 – musefan

+0

@musefan,我問了一些問題,在下面的答案中提到。以下查詢不是LINQ? – user2318170

+0

那麼,你查詢數據的位是...但是ForEach不是LINQ的一部分。這只是'List '的一種方法 – musefan

回答

0

如果你有數據的列表如下:

var data = context.Target.Transaction 
    .Where(m => m.Month >= detailsDaily.Month 
     && m.Month <= parameter.Month) 
    .ToList(); 

後,可以看到點心,如:

var sum = data.Sum(m => m.ProposalNumber); 

,你可以設置ProposalNumber爲0,如:

data.ForEach(m => m.ProposalNumber = 0); 

注意:如果您使用的是實體框架(正如我所想的那樣) )如果行數太多,則加載所有數據的操作可能很昂貴。如果您沒有大量數據,並且您選擇以這種方式更新數據,則必須在設置值後調用context.SaveChanges()進行更改。您還應該確保context.Configurations.AutoDetectChangesEnabled設置爲true。我建議在這種情況下使用Raw SQL queries而不是此選項。