c#从基础学起string.Join(",", keys.ToArray())
总感觉自己工作6年了,经验丰富。直到近期报了一个.net进阶班才知道。我还差得很远。就拿string.join对比
我的代码:
public static int InsertModel<T>(T t) where T : BaseModel
{
Type type = typeof(T);
string columnStrings = string.Join(",", type.GetProperties().Select(p => string.Format("[{0}]", p.Name)));
string sql = "insert into "+type.Name+"(";
foreach (var item in type.GetProperties())
{
if (item.Name != "Id")
{
sql+=item.Name+",";
}
}
sql = sql.Substring(, sql.Length - );
sql += ")";
sql+=" values(";
foreach (var item in type.GetProperties())
{
if (item.Name != "Id")
{
sql += "'" + item.GetValue(t) + "',";
}
}
sql = sql.Substring(, sql.Length - );
sql += ")";
return DbHelperSQL.ExecuteSql(sql); }
会发现在insert的时候我拼接的比较辛苦,后来和我们班的优秀作业对比了一下。下面是他的代码:
public bool Insert<T>(T t) where T : BaseModel
{
//插入实体时要判断一下时间的插入.还可以通过特性来判断一下数据的长度
//约定的id为自增长.
var type = typeof(T);
var keys = new List<string>();
var values = new List<string>();
var par = new List<SqlParameter>();
foreach (var item in type.GetProperties())
{
var value = item.GetValue(t);
if (item.Name.ToLower() == "id") continue;
keys.Add(item.Name);
values.Add("@" + item.Name);
par.Add(new SqlParameter("@" + item.Name, value));
}
var c = string.Join(",", keys.ToArray());
var v = string.Join(",", values.ToArray());
var sql = string.Format($"INSERT INTO [{type.Name}] ({c}) " +
$"VALUES({v})"); return ExcuteSql<bool>(sql, cmd =>
{
foreach (var parameter in par)
cmd.Parameters.Add(parameter); var result = cmd.ExecuteNonQuery();
return result > ;
}); // return RunCmd(sql, par.ToArray());
}
发现他很巧妙的用了string.join。与我的相比省去了好多代码
以后当自勉,代码更上一层!!!
c#从基础学起string.Join(",", keys.ToArray())的更多相关文章
- C#利用 string.Join 泛型集合快速转换拼接字符串
C#利用 string.Join 泛型集合快速转换拼接字符串 List<int> superior_list = new List<int>(); superior_list. ...
- 《零基础学JavaScript(全彩版)》学习笔记
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...
- string.join加引号
columnsGen = string.Join(",", modelDictionary.Keys); valueGen = modelDictionary.Values.Agg ...
- C# - Dictionary join keys or join Values
using System; using System.Collections.Generic; using System.Linq; using System.Text; public class P ...
- [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...
- .net基础学java系列(三)徘徊反思
.net基础学java系列(三)徘徊反思 上一篇文章:.net基础学java系列(二)IDE 之 插件 这两天晚上看完了IDEA的教学视频:https://edu.51cto.com/course/1 ...
- D10——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2. ...
- 零基础学python-3.2 变量赋值
这一节我们来具体展开变量赋值 1.以下我们举各种赋值的样例 anInt=12 anFloat=2.2 anStr='string' aList=['a','a','a'] anArray=(1,2,3 ...
- 【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行
1.hello micropython #MicroPython动手做(04)——零基础学MaixPy之基本示例 #程序之一:hello micropython #MicroPython动手做(04) ...
随机推荐
- appium 启动了2个端口,但是只有一台机器在跑的 问题解决 (还没试,记录在此)
appium启动了2个,端口分别设置为了4723 4725, 在测试类中也分别指定了设备和端口,用device来指定.然而每次都是运行一个设备. 后来添加了udid这个来指定才发现可以.deviceN ...
- 廖雪峰Java4反射与泛型-2注解-2定义注解
1.定义注解 使用@interface定义注解Annotation 注解的参数类似无参数方法 可以设定一个默认值(推荐) 把最常用的参数命名为value(推荐) 2.元注解 2.1Target使用方式 ...
- [UE4]捡枪
一.给角色添加碰撞胶囊体并添加On Component Begin Overlap事件 二.检查碰到的东西是不是武器 三.要捡的武器是否已经有主人.检查身上是否有同样类型的枪 五.把枪放到背包数组.关 ...
- Linux常用命令1-50(持续更新中)
1:echo $PATH (打印出PATH变量的值) 不同用户下面的PATH值有可能不一样 echo 有显示打印的意思 $ 表示后面的是一个变量的意思 PATH 变量 /usr ...
- XrmToolBox 连接
- java使用jedis访问CentOS中的redis
pom.xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</ ...
- geoserver 常见问题笔记
1.cql查询示例,根据点查询返回code的空间查询示例 http://192.168.0.226:8080/geoserver/lgum/ows?service=WFS&version=1. ...
- 1-Lombok工具使用
1.先给Eclispe安装Lombok插件 首先下载 lombok-1.16.6.jar 这个jar包 存放在系统任意盘里面 我这里是放在 c:\lombok-1.16.6.jar 运行命令 点 ...
- Spring MVC post请求乱码解决
在页面发送POST请求,将中文传递给controller,在编译平台发生乱码,导致存储到数据库中的数据也乱码 解决办法: 在web.xml中添加一个编码过滤器 <filter> <f ...
- Android 硬编码
public class TextViewActivity extends Activity { // 声明TextView对象 private TextView textView; @Overrid ...