2010-07-12 107 views
1

我是LINQ to Entities的新手,需要一些關於如何考慮多行更新的指導。我的問題實際上比語法更概念,因爲我不確定我是否正確地考慮解決方案。LINQ to Entities更新多行

這是一個單行更新。這看起來非常簡單。

products prodtbl = (from p in db.products where p.product_id == 1 select p).First(); 
prodtbl.product_name = "Blueberry Jam"; 
db.SaveChanges(); 

當我希望更新多行(例如,刪除where子句)時,會出現此問題。然後prodtbl不能作爲列表尋址。如果我想要看到第10行的產品名稱是唯一的方法來做到這一點如下?

'List<type> prodlist = prodtbl.ToList<type>()'; 
string name = prodlist[9].product_name 

現在,如果我更改prodlist [9] .product_name,我該如何更新prodtbl中的原始行?由於prodtbl不能作爲數組尋址,所以我不能設置它,可以嗎?我是否必須創建一個只有更新單條記錄的where子句的LINQ語句?如果答案是'是的,如果我更改了多行,是否有批量更新方法?

回答

1

您不需要創建單獨的語句。

可以使用,例如:

prodtbl.ElementAt(9).product_name = "Bob"; 

或者iterate:

foreach (var p in prodtbl) 
{ 
    p.product_name = "New name"; 
} 
+0

感謝你 - 那個回答它。 – 2010-08-17 13:12:55

1

可以按如下方式執行此操作,

var objTrn = context.Trn_Dependent.Where(i => i.DependentID == DependentId).ToList(); 
         objTrn.ForEach(x => { x.IsDeleted = true; x.UpdatedBy = objUserInfo.EnrolleeID.ToString(); x.UpdatedOn = DateTime.Now; });       
         objTrn.ForEach(p => context.Entry(p).State = EntityState.Modified); 
context.SaveChanges();