将linq中的泛型实体更新为对象

本文关键字:更新 对象 实体 泛型 linq | 更新日期: 2023-09-27 18:23:51

我有一个用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(); 这样的方法

请帮忙非常感谢:)

将linq中的泛型实体更新为对象

我认为在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)、更快。

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

中工作