关于这个问题Passing DataContext into Action()的答案,我如何从操作(Db)返回一个值?
SimpleUsing.DoUsing(db => {
// do whatever with db
});
应该更像这样:
MyType myType = SimpleUsing.DoUsing<MyType>(db => {
// do whatever with db. query buit using db returns MyType.
});
发布于 2011-11-12 04:53:09
你的静态方法应该是:
public static class SimpleUsing
{
public static void DoUsing(Action<MyDataContext> action)
{
using (MyDataContext db = new MyDataContext())
action(db);
}
}
至:
public static class SimpleUsing
{
public static TResult DoUsing<TResult>(Func<MyDataContext, TResult> action)
{
using (MyDataContext db = new MyDataContext())
return action(db);
}
}
这个答案来自评论,所以我可以提供代码。有关完整的详细信息,请参阅下面@sll的答案。
发布于 2011-11-12 04:52:15
您还可以利用lambda或匿名方法可以关闭其封闭作用域中的变量这一事实。
MyType result;
SimpleUsing.DoUsing(db =>
{
result = db.SomeQuery(); //whatever returns the MyType result
});
//do something with result
https://stackoverflow.com/questions/8099631
复制相似问题