1.更新单个字段

/// <summary>
/// 更新字段
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="conditions">where 筛选对象</param>
/// <param name="updateLamda">更新字段</param>
/// <returns></returns>
public IEnumerable<T> Update<T>( Expression<Func<T, bool>> conditions,Func<T, dynamic> updateLamda) where T : ModelBase
{
List<T> setList;
if (conditions!=null)
{
setList= this.Set<T>().Where(conditions).ToList();
}
else
{
setList = this.Set<T>().ToList();
}
foreach (var item in setList)
{
SetValue<T>(item, updateLamda);
this.Entry<T>(item).State = EntityState.Modified;
}
this.SaveChanges();
return setList;
} public dynamic SetValue<T>(T entity, Func<T, dynamic> expr)
{
return expr(entity);
}

更新单个字段

action中的使用:

public ActionResult Edit()
{
using (ActivityDbContext dbContext = new ActivityDbContext())
{
dbContext.Update<Order>(u => u.ID==1,u =>u.UserName= u.OrderNumber.Replace("1", "xx"));
//第一个lambda表达式是用来筛选的,第二个则是进行替换的,在方法编写里面,用了dynamic动态对象,因为没办法确定改了哪个属性,只不过暂时只能改一个,改多个还不会(-_-)
} return View();
}

2.lambda修改对象的属性

public dynamic SetValue<T>(T entity, Func<T, dynamic> expr)
{
return expr(entity);
}

添加对象自身方法

    public static class UpdateObject
{
public static dynamic SetValue2<T>(this T obj, Func<T, dynamic> expr)
{
return expr(obj);
}
public static dynamic SetValue2<T>(this T obj, List<Func<T, dynamic>> expr)
{
foreach (var item in expr)
{
item(obj);
}
return obj;
} }
     class Program
{
static void Main(string[] args)
{ #region 修改对象属性方法
GetProperty p = new GetProperty() { Name1 = "" };
//SetValue<GetProperty>(p, u => u.Name1 = "2");
Console.WriteLine(p.Name1);
//p.SetValue2<GetProperty>(u => u.Name2 = u.Name2 + 1 + 2);
p.SetValue2<GetProperty>(new List<Func<GetProperty, dynamic>>() { new Func<GetProperty, dynamic>(u => u.Name2 = u.Name2 + ), new Func<GetProperty, dynamic>(u => u.Name3 = u.Name3 + ) });
Console.WriteLine(p.Name2);
Console.WriteLine(p.Name3);
#endregion
Console.ReadKey();
} public static string GetPropertyName<T>(Expression<Func<T,string>> expr)
{
var name = ((MemberExpression)expr.Body).Member.Name;
return name;
} public static dynamic SetValue<T>(T entity, Func<T, dynamic> expr)
{
return expr(entity);
} public static dynamic SetValue<T>(T entity,List< Func<T, dynamic>> expr)
{
foreach (var item in expr)
{
item(entity);
}
return entity;
} } public static class UpdateObject
{
public static dynamic SetValue2<T>(this T obj, Func<T, dynamic> expr)
{
return expr(obj);
}
public static dynamic SetValue2<T>(this T obj, List<Func<T, dynamic>> expr)
{
foreach (var item in expr)
{
item(obj);
}
return obj;
} } public class GetProperty{
public string Name1 { get; set; }
public string Name2 { get; set; }
public string Name3 { get; set; }
}

控制台-修改对象属性

最新文章

  1. 用PowerShell脚本实现对SharePoint页面Title的修改
  2. UIRefreshControl自动刷新
  3. ios基础篇(二)——UIImageView的常见用法
  4. 解决DataGridView在多线程中无法显示滚动条的问题
  5. 剑指Offer23 二叉树中和为sum的路径
  6. MongoDB主从配置
  7. paip.hadoop的应用研究总结
  8. poj 1949 Chores 最长路
  9. 关于微信小程序遇到的wx.request({})问题
  10. 分享一个VueCli 3.0的项目模板
  11. oracle常用命令收集
  12. 4月10日java多线程3
  13. pageHelper多个sql分页
  14. GRNN/PNN:基于GRNN、PNN两神经网络实现并比较鸢尾花种类识别正确率、各个模型运行时间对比—Jason niu
  15. poj1279
  16. Java 算法 概念汇总
  17. shell脚本实例-shell 分析系统瓶颈脚本
  18. 解决linux下node.js全局模块找不到的情况
  19. LintCode——合并排序数组II
  20. English trip -- MC(情景课)6 Time

热门文章

  1. WAS启动报错Service failed to start. startServer return code = -1
  2. TCDB 数据库简介
  3. c# 单实例运行
  4. iOS: Sorted Array with Compare
  5. SAX解析XML笔记
  6. Mongodb学习笔记(1)--入门
  7. Layer笔记
  8. 使用Fakes的Stub和Shim对ASP.NET MVC4进行单元测试
  9. 【python】logging
  10. 父组件中vuex方法更新state,子组件不能及时更新并渲染的解决方法