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; }
}

控制台-修改对象属性

c# linq update单个字段的更多相关文章

  1. ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql

    转: ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql 本文为博主原创,转载请注明出处. 在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时 ...

  2. [转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题

    原文地址:http://www.ablanxue.com/prone_3552_1.html 1. 查询整个映射对象所有字段 Java代码 //直接from查询出来的是一个映射对象,即:查询整个映射对 ...

  3. JPA查询单个字段和多个字段返回类型总结

    原文地址:https://blog.csdn.net/weixin_40326509/article/details/80865646 在使用springboot中,需要使用JPQL和SQL去查询记录 ...

  4. $(formName).data(“bootstrapValidator”).getFieldElements('fieldName'); 校验单个字段

    问题也出自于业务系统后台,应该来说也比较常见吧 房产类型分为一抵和二抵,二抵的时候用户必须填写一抵债权金额,一抵的时候则不显示一抵债权金额也不校验,因为我所有的校验都是写在标签上,哪些必填直接写在标签 ...

  5. JDK8:Lambda根据 单个字段、多个字段,分组求和

    使用lambda表达式分别 根据 单个字段.多个字段,分组求和 示意图: 1.根据 单个字段,分组求和:根据2019这个字段,计算一个list集合里,同属于2019的某个字段累加和 2.根据 多个字段 ...

  6. linq中给字段添加别名

    linq 是我们在查询中经常回用到的一种形式,比如我们创建一个类,然后List<添加> 并绑定到表格中 public class Modeltest { string id; public ...

  7. 【Oracle】【8】大批量update某个字段

    正文: 需实现:将A表的某个字段的值复制到B表中 我们一般会这样写:UPDATE B SET B.NAME = (SELECT A.NAME FROM A WHERE A.NO = B.NO) 出现的 ...

  8. update condition 字段报错

    mysql> update tf_user_present set condition="0" where id=1;ERROR 1064 (42000): You have ...

  9. 【spring data jpa】spring data jpa 中的update 更新字段,如果原字段值为null不处理,不为null则在原来的值上加一段字符串

    示例代码: /** * 如果barCode字段值为null则不处理 * 如果barCode字段值不为null则在原本值的前面拼接 del: * @param dealer * @return */ @ ...

随机推荐

  1. python 调用 C语言函数

    python可以直接调用C语言的函数,本文记录用ctypes调用c语言的方法. test.c #include <stdio.h> int test(char *temp) { print ...

  2. 移动端微信应用开发总结(function ajax meta)

    关键字:document function ajax jquery html5 meta 微信应用开发时,特意把各个容易混淆的知识点和要点,梳理后记录下来,也分享给各位.有问题还请多指正. 一 文档载 ...

  3. C#跳转网页7种方法

    1.Response.Redirect(http://www.baidu.com,false); 目标页面和原页面可以在2个服务器上,可输入网址或相对路径.后面的bool值为是否停止执行当前页. 跳转 ...

  4. SSH实现双向认证

    SSH实现双向认证 由于经常需要使用scp在两台机器间拷贝文件,每次都输入密码太麻烦,于是按下面的步骤配置了一下,再使用ssh或scp登录远程机器时就不需输入密码了: A主机:192.168.100. ...

  5. C# winform右击导入手机号码

    private void 导入手机号ToolStripMenuItem_Click(object sender, EventArgs e) { using (OpenFileDialog Openfi ...

  6. 原理分析之一:从JDBC到Mybatis

    原理分析之一:从JDBC到Mybatis Mybatis学习(一)原生态的JDBC编程总结 -----系列 深入浅出MyBatis-快速入门

  7. [Learn AF3]第五章 App Framework 3组件之Drawer——Side Menu

    Drawer——Side menu 组件名称:Drawer     说明:af3中的side menu和af2中有很大变化,af3中的side menu实际上是通过插件$.afui.drawer来实现 ...

  8. php过滤字段htmlentities,htmlspecialchars,strip_tags

    1.strip_tags:过滤html标签比如<a> <html> <script> 如: $str = '<a href="test.html&q ...

  9. UNIX环境编程学习笔记(23)——信号处理初步学习

    lienhua342014-10-29 1 信号的概念 维基百科中关于信号的描述是这样的: 在计算机科学中,信号(英语:Signals)是 Unix.类 Unix 以及其他 POSIX 兼容的操作系统 ...

  10. 前端如何获取http状态码400的返回值

    axios.get("/check_mobile_and_sent_code",{withCredentials:true,params:{mobile:formInline.mo ...