1.对LInq的封装如下:

    private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
public static MyFZDataContext a = null;
static String path = Application.StartupPath;
public MyFZDataContext(): base(getConnstring(), mappingSource)
{ } public MyFZDataContext(bool b): base(getConnstring(), mappingSource)
{
this.ObjectTrackingEnabled = b;
} public static string connstring = "";
public static XmlSerialize xml = new XmlSerialize();
public static Common.Setting set = xml.DeSerialize(); public static string getConnstring()
{
String Ip = set.IP;
string user = set.User;
string pass = set.Password;
string DB = set.DB;
connstring = "Data Source=" + Ip + ";Initial Catalog=" + DB + ";Persist Security Info=True;User ID=" + user + ";Password=" + pass + "" + ";Application Name=" + "NetHotel";
return connstring;
} public static MyFZDataContext getDataContext()
{
if (a == null)
{ a = new MyFZDataContext(false);
}
return a; }

2.在代码中使用时加入

 using System.Data.Linq;
using System.Linq;
using DataBase;

3.一个从数据库,得到数据的例子

 MyFZDataContext dataContext = new MyFZDataContext();
var v1 = from t in dataContext.VIEW_LD
where
t.账号.Contains(textEdit_Search.Text) ||
t.手机.Contains(textEdit_Search.Text) ||
t.承租人.Contains(textEdit_Search.Text)
select t;
DataTable dt = DataFunction.LINQToDataTable(v1);
this.gridControl1.DataSource = dt;

4.事务的使用

 #region 增加//增加
MyFZDataContext dataContext = new MyFZDataContext();
if (dataContext.Connection != null) { dataContext.Connection.Open(); }
System.Data.Common.DbTransaction tran = dataContext.Connection.BeginTransaction();
dataContext.Transaction = tran;
try
{
dataContext.SubmitChanges(); tran.Commit();
MessageBox.Show("保存成功");
this.Close();
}
catch (Exception ex)
{ tran.Rollback();
MessageBox.Show(ex.Message);
}
#endregion

5.把得到数据转成dataTable

 public static DataTable LINQToDataTable<T>(IEnumerable<T> varlist)
{
DataTable dtReturn = new DataTable(); // column names
PropertyInfo[] oProps = null; if (varlist == null) return dtReturn; foreach (T rec in varlist)
{
//// Use reflection to get property names, to create table, Only first time, others
//will follow
if (oProps == null)
{
oProps = ((Type)rec.GetType()).GetProperties();
foreach (PropertyInfo pi in oProps)
{
Type colType = pi.PropertyType; if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition()
== typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[];
} dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
}
} DataRow dr = dtReturn.NewRow(); foreach (PropertyInfo pi in oProps)
{
dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue
(rec, null);
} dtReturn.Rows.Add(dr);
}
return dtReturn;
}

房租管理小软件(四):对linq的使用的更多相关文章

  1. 房租管理小软件(六):通用功能包括时间,效验,MD5加密,XML 操作

    1.时间相关 public static DateTime getNow() { MyFZDataContext dataContext = MyFZDataContext.getDataContex ...

  2. 房租管理小软件(七):flowlayoutPancel 中增加分类控

    见下图的 string FNodeName = dt.Rows[i]["FNodeName"].ToString(); ) { RoomControl.Thumbnail.Grou ...

  3. Qt基于sqlite数据库的管理小软件

    闲来无事,写了一个基于sqlite的数据库管理小软件. 先上图 中心思想就是: 创建一个数据库 然后每一个分组对应一个数据表 然后遍历该数据表.将名字以treewidgetItem显示出来.添加删除实 ...

  4. Mac 上有哪些比较有意思的小软件?

    文章素材来源:微博.新浪看点 收录于:风云社区(SCOEE)[提供mac软件下载] 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 SCOEE],查找和下载相关软件资源. (一) ...

  5. 66、django之模型层(model)--多表相关操作(图书管理小练习)

    前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...

  6. django之模型层(model)--多表相关操作(图书管理小练习)

    前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...

  7. 8个爽滑如丝的Windows小软件,不好用你拿王思葱砸死我

    假如我说有一款软件,能顶替60款软件:还有一款软件,能顶替60个你:还有一款软件,好用到60岁你都不想它被顶替.....我知道,你不相信天是蓝的,你不相信雷的回声,你不相信梦是假的,你不相信死无报应. ...

  8. C# 小软件部分(一)

    自己在空闲时分整合.编写了一款小软件程序,命名为魔法兔子,希望大家可以提出意见和指导,此篇文章主要为软件的部分截图和介绍. 软件详情: 1.首先是登录,注册界面. 可以注册自己的账号,后台是腾讯云服务 ...

  9. 自己工作之余做的OSX小软件

    ShareSDK是为iOS.Android.WindowsPhone提供社会功能的一个组件,开发者只需10分钟即可集成到自己的APP中,它不仅支持分享给QQ好友.微信好友.微信朋友圈.新浪微博.腾迅微 ...

随机推荐

  1. c#面向对象机制的进一步理解

    今天看到一个面试题很有意思: namespace EventTest{ class Program { static void Main(string[] args) { A a = new C(); ...

  2. 1003: [ZJOI2006]物流运输trans - BZOJ

    Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过 ...

  3. 设置Cookie

    var Site=new Object(); Site.Cookie={ _expires:24*3600*1000, _domain:'.gdxxb.com', set:function(name, ...

  4. 无法为请求的 Configuration 对象创建配置文件 错误原因

    Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); 无法为请求的 Configura ...

  5. [转载]C# 中Web.config文件的读取与写入

    asp.net2.0新添加了对web.config直接操作的功能.开发的时候有可能用到在web.config里设置配置文件,其实是可以通过程序来设置这些配置节的. asp.net2.0需要添加引用: ...

  6. PAT-乙级-1045. 快速排序(25)

    1045. 快速排序(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 著名的快速排序算法里有一个经典的划分 ...

  7. PHP 7 值得期待的新特性(上)

    这是我们期待已久的 PHP 7 系列文章的第一篇. 或许你已经知道了,我在 PHP 5.0.0 时间轴 提的 RFC (Request For Comments)通过了, PHP 7 成为 PHP 下 ...

  8. python常用web框架性能测试(django,flask,bottle,tornado)

    测了一下django.flask.bottle.tornado 框架本身最简单的性能.对django的性能完全无语了. django.flask.bottle 均使用gunicorn+gevent启动 ...

  9. 【疯狂Java讲义学习笔记】【流程控制与数组】

    [学习笔记]1.switch语句后的expression表达式的数据类型只能是byte.short.char.int四个整数类型.String(Java 7后才支持)和枚举类型. 2.数组的长度不可变 ...

  10. TCP协议可靠性数据传输实现原理分析

    http://blog.csdn.net/chexlong/article/details/6123087 TCP 协议是一种面向连接的,为不同主机进程间提供可靠数据传输的协议.TCP 协议假定其所使 ...