c# linq update单个字段
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单个字段的更多相关文章
- ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql
转: ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql 本文为博主原创,转载请注明出处. 在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时 ...
- [转]Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题
原文地址:http://www.ablanxue.com/prone_3552_1.html 1. 查询整个映射对象所有字段 Java代码 //直接from查询出来的是一个映射对象,即:查询整个映射对 ...
- JPA查询单个字段和多个字段返回类型总结
原文地址:https://blog.csdn.net/weixin_40326509/article/details/80865646 在使用springboot中,需要使用JPQL和SQL去查询记录 ...
- $(formName).data(“bootstrapValidator”).getFieldElements('fieldName'); 校验单个字段
问题也出自于业务系统后台,应该来说也比较常见吧 房产类型分为一抵和二抵,二抵的时候用户必须填写一抵债权金额,一抵的时候则不显示一抵债权金额也不校验,因为我所有的校验都是写在标签上,哪些必填直接写在标签 ...
- JDK8:Lambda根据 单个字段、多个字段,分组求和
使用lambda表达式分别 根据 单个字段.多个字段,分组求和 示意图: 1.根据 单个字段,分组求和:根据2019这个字段,计算一个list集合里,同属于2019的某个字段累加和 2.根据 多个字段 ...
- linq中给字段添加别名
linq 是我们在查询中经常回用到的一种形式,比如我们创建一个类,然后List<添加> 并绑定到表格中 public class Modeltest { string id; public ...
- 【Oracle】【8】大批量update某个字段
正文: 需实现:将A表的某个字段的值复制到B表中 我们一般会这样写:UPDATE B SET B.NAME = (SELECT A.NAME FROM A WHERE A.NO = B.NO) 出现的 ...
- update condition 字段报错
mysql> update tf_user_present set condition="0" where id=1;ERROR 1064 (42000): You have ...
- 【spring data jpa】spring data jpa 中的update 更新字段,如果原字段值为null不处理,不为null则在原来的值上加一段字符串
示例代码: /** * 如果barCode字段值为null则不处理 * 如果barCode字段值不为null则在原本值的前面拼接 del: * @param dealer * @return */ @ ...
随机推荐
- HTML5实现摇一摇的功能(实测后)--转
eviceMotionEvent(设备运动事件)返回设备有关于加速度和旋转的相关信息.加速度的数据将包含三个轴:x,y和z(示意如下图所 示,x轴横向贯穿手机屏幕或者笔记本键盘,y轴纵向贯穿手机屏幕或 ...
- Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)
一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...
- e611. Setting Focus Traversal Keys for the Entire Application
This example changes the focus traversal keys for the entire application. For an example of how to c ...
- VMware虚拟CentOS 6.5在NAT模式下配置静态IP地址及Xshell远程控制配置
VMware虚拟CentOS 6.5在NAT模式下配置静态IP地址及Xshell远程控制配置 标签: LinuxXshellCentOS 2016-10-15 04:58 127人阅读 评论(0) 收 ...
- 制作CentOS fence-agents 镜像
1, Download centos7 iso file: Centos7 ISO download: http://buildlogs.centos.org/rolling/7/isos/x86_6 ...
- tf.variable_scope
转载:https://blog.csdn.net/gaoyueace/article/details/79079068 例如: #在名字为ae的命名空间内创建变量 with tf.variable_s ...
- struts实现国际化
上篇博客学习了Java国际化的一些基础知识,了解了这些知识之后,我们可以更好的过度到struts国际化. 本篇博客主要学习struts国际化的实现: 1.配置环境设置baseName. 在struts ...
- protected: C++ access control works on per-class basis, not on per-object basis
一个很简单的问题: //为什么BASE::foo()中可以直接通过p访问val? 看本记录标题,这个问题困扰了很长一段时间,终于解决class BASE { private: ...
- 自建Nuger Server拾遗
企业内部的包需要通过nuget来管理发布,或者一些不允许上外网的企业,通过自己的nuget服务器来使用nuget,都会考虑到自建一个nuget服务器.本文整理了一些有用的链接和使用心得,以备不时之需. ...
- 五大行获央行5000亿SLF 相当于降准0.5%
人民网北京9月17日电 (吕骞)据新浪财经报道,9月16日收盘后,市场传央行当天对五大行进行5000亿SLF操作,性质类同基础货币的投放,近似全面降准0.5个百分点.国泰君安.国信等数家机构晚间证实传 ...