总感觉自己工作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())的更多相关文章

  1. C#利用 string.Join 泛型集合快速转换拼接字符串

    C#利用 string.Join 泛型集合快速转换拼接字符串 List<int> superior_list = new List<int>(); superior_list. ...

  2. 《零基础学JavaScript(全彩版)》学习笔记

    <零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...

  3. string.join加引号

    columnsGen = string.Join(",", modelDictionary.Keys); valueGen = modelDictionary.Values.Agg ...

  4. C# - Dictionary join keys or join Values

    using System; using System.Collections.Generic; using System.Linq; using System.Text; public class P ...

  5. [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念

    上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...

  6. .net基础学java系列(三)徘徊反思

    .net基础学java系列(三)徘徊反思 上一篇文章:.net基础学java系列(二)IDE 之 插件 这两天晚上看完了IDEA的教学视频:https://edu.51cto.com/course/1 ...

  7. D10——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D10 20180906内容纲要: 1.协程 (1)yield (2)greenlet (3)gevent (4)gevent实现单线程下socket多并发 2. ...

  8. 零基础学python-3.2 变量赋值

    这一节我们来具体展开变量赋值 1.以下我们举各种赋值的样例 anInt=12 anFloat=2.2 anStr='string' aList=['a','a','a'] anArray=(1,2,3 ...

  9. 【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行

    1.hello micropython #MicroPython动手做(04)——零基础学MaixPy之基本示例 #程序之一:hello micropython #MicroPython动手做(04) ...

随机推荐

  1. C#批量更新mongodb符合条件的数据

    默认情况下只会更新匹配的第一条 jingjiaanalyurl.Update(Query.EQ("auid", jingjiaitem.id), Update.Set(" ...

  2. R read.table 一个问题的解决

    Warning message: In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : EOF within q ...

  3. NodeJs使用Express框架开发时的快速调试方法

    习惯了php开发,可以直接使用echo或者var_dump()将想要查看的变量结果输出到网页查看,非常的方便.但是使用express开发时,每次修改文件后,都需要使用npm start命令重启服务,然 ...

  4. java中友元的完美实现(转载)

    http://blog.sina.com.cn/s/blog_ce5b9f7e0102vhiv.html C++中有一个友元机制,可以给予一个类访问另一个类中私有成员的权限.   这个机制有时候是很有 ...

  5. dropwizard使用cors支持跨域浏览器取不到自定义header问题

    dropwizard支持cors的配置如下: public void run(Configuration conf, Environment environment) { // Enable CORS ...

  6. Shell案例:图案打印

    打印三角形图案 #!/bin/bash echo "Stars" ; i<=; i++ )) do ; j<=i; j++ )) do echo -n " * ...

  7. VLAN 及 GVRP 配置

    一.VLAN配置 +进入vlan视图,如果指定的vlan没有创建则先创建它 [undo]vlan vlan_id undo vlan 剔除已创建的vlan VLAN_id:要进入的或要创建并进入的VL ...

  8. AndroidStudio2.2.2 打开ddms快捷键

    按两下shift键,后在弹出的对话框中输入Android Device,在出现的选项中单击即可,如图.

  9. ZooKeeper系列(7):ZooKeeper一致性原理

    一.ZooKeeper 的实现 1.1 ZooKeeper处理单点故障 我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示. 图 1.1 ZooK ...

  10. c语言数据类型(一)

    (强数据类型) 1.常量 常量是程序中不可变的量 10为常量 两种常量 #define 定义宏常量 const #对于#define 类型的常量,c语言的习惯是常量名称大写, 对于普通const常量以 ...