我有一个用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写这个对象,特别是没有类似GetTable<T>().Where(predicate).First();
的方法
请帮忙 非常感谢:))
答案 0 :(得分:0)
我没有看到在LINQ对象中甚至需要这样的方法。您的代码可以简单地完成工作。 E.g。
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),并且比后者更快。
答案 1 :(得分:0)
您可以自己实现myContext.GetTable()。为Context类创建扩展方法。 在方法内部使用反射来查找db set whith类型T并返回它,其余的代码将起作用