0

我有一个用 linq to 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();

请帮助非常感谢:)

4

2 回答 2

0

我认为在 LINQ to 对象中甚至不需要这种方法。您的代码可以简单地自己完成工作。例如

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)和更快。

于 2013-07-18T13:56:21.347 回答
0

您可以自己实现 myContext.GetTable()。为 Context 类创建一个扩展方法。在方法内部使用反射找到类型 T 的数据库集并将其返回,其余代码将起作用

于 2013-07-18T13:58:37.223 回答