随笔 - 17  文章 - 0  评论 - 246  阅读 - 40206 

由于上次发表了生成chm帮助文件,各位朋友都要求要源码,很多朋友我用邮箱发了,但很多朋友来不及发了(主要是我不知道咋在博客园中上传文件,而且最近好忙啊,真是。。。。。。),而且之前那个软件开发环境版本很低,所以我决定用vs2010重新开发一遍,其中后台主要用linq to sql (刚学的,用起来不是很顺,感觉有点小问题),不过基本上就是把原来用ADO.NET的地方用linq 语句改下了一下,大体功能没变。希望能给大家有点帮助。点击这里下载(文件名——WindowsFormsApplication2)

当然这个小项目也有瑕疵,比如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//string sql1 = "SELECT dcId,dcName,dcType,dcLength,CASE WHEN dcIsNull=1 THEN '√' ELSE '×'END AS dcIsNull,CASE WHEN dcDefault=0 THEN NULL ELSE dcDefault END AS dcDefault,dcRemark,ddcId FROM DocumentChilds WHERE ddcId='" + e.Node.Tag + "' ORDER BY dcName";
               //dts = DBHelper.getDatatable(sql1);
             
                
               var v4 = from dc in cx.DocumentChilds where dc.ddcId == Convert.ToInt32(e.Node.Tag) select new
               {  
                   dc.dcId,
                   dc.dcName,
                   dc.dcType,
                   dc.dcLength,
                   dc.dcIsNull,
                   dc.dcDefault,
                   dc.dcRemark,
                   dc.ddcId
               };
               dts = v4.ToDataTable(cx);

  被注释sql用到了CASE WHEN dcIsNull=1 THEN '√' ELSE '×'END AS dcIsNull,用linq to sql 我还真是不知道该咋写呢(如果过有知道的朋友,求给留言指教)

而且之力用到的  dts = v4.ToDataTable(cx);,中的ToDataTabel()方法不是系统自带的方法,linq 默认可以转换成对象,集合,数组,但就是没有数据集,这一点刚开始让我很是纠结,不过还好在网上找到了一个这样的方法,如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/// <summary>
       /// 对 System.Data.Linq 的扩展
       /// 从给定的Linq To SQL 查询获取 DataTable 对象
       /// </summary>
       /// <param name="source"></param>
       /// <param name="db"></param>
       /// <returns></returns>
       public static DataTable ToDataTable(this IQueryable source, DataClasses1DataContext db)
       {
           //将 LinqToSQL查询传递给 GetCommand()以获取DbCommand对象
           DbCommand cmd = db.GetCommand(source);
           //打开数据库链接,这里可以进一步扩展,比如传递进来自己定义的继承自 DbConnection 的对象
           if (db.Connection.State == ConnectionState.Closed)
               db.Connection.Open();
           //声明 DataTable 对象
           DataTable dt = new DataTable();
           //调用DataTable 对象的 Load方法 ,从 DbDataReader 对象加载数据。
           dt.Load(cmd.ExecuteReader());
           //关闭DbConnection 链接
           db.Connection.Close();
 
           return dt;
       }

  这个写在公共的静态类里,只要你返回的linq 语句没语法错误(如果有语法错误就.不出来了,呵呵,可以检验你是否语法错误,真是高级 啊),都可以todatatable转换成数据集,也是很方便 ,(爱死数据集操作了,方便),问题有很多,慢慢改进中,我这边先迫不及待的要发一份了,好像也有朋友急着要代码,这次搞定它

 

 

posted on   懒胖gg  阅读(2380)  评论(13编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示