2013-07-18 48 views
0

我已經寫在LINQ的功能爲sql更新通用實體爲對象

public static bool update(System.Linq.Expressions.Expression<Func<T,bool>> predicate,Action<T> setter) 
     { 
      try 
      { 
       Context myContext = new Context(); 
       T updateObject; 
       updateObject = myContext.GetTable<T>().Where(predicate).First(); 
       setter(updateObject); 
       nhagoDb.SubmitChanges(); 
       return true; 
      } 
      catch (Exception ex) 
      { 
       return false; 
      } 
     } 

,但我不知道如何在LINQ to對象的寫本,特別是有像GetTable<T>().Where(predicate).First();

沒有方法請幫助 非常感謝:)

+0

對象的Linq對內存集合起作用。你在收藏什麼? – Maarten

+0

我會將Where(p).First()更改爲Single(p),以確保您正在更新一條記錄並僅記錄下來, –

回答

0

我沒有看到,這種方法甚至是在LINQ to object中所必需的。你的代碼可以簡單地完成工作本身。例如。

var myObject = myList.First(x => x.Something); 
myObject.UpdateSomething(newValue); 
// or just: 
myList.First(x => x.Something).UpdateSomething(newValue); 

如果你確實想一個方法來做到這一點,它會被稱爲像:

myList.Update(x => x.Something, x => x.UpdateSomething(newValue)); 

前者比後者更短,更清晰(IMO),和更快。

0

你可以自己實現myContext.GetTable()。爲Context類創建一個擴展方法。 在該方法內部使用反射來查找類型爲T的db集並將其返回,其餘代碼將可以工作