Linq使用介绍及注意事项
2014-04-17 15:03 hduhans 阅读(214) 评论(0) 收藏 举报LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。
工具:LinqPad(http://www.linqpad.net/)分析工具
一、使用方法
1、返回匿名类型
var sql = from c in tb select new {c.EUserName,c.AreaName}
var sql = from c in tb select new {EUserName:c.EUserName,AreaDepName:c.AreaName +c.DeaprtName};
2、事务处理,见如下代码:
if (_dataContext.Connection != null) _dataContext.Connection.Open(); DbTransaction tran = _dataContext.Connection.BeginTransaction(); _dataContext.Transaction = tran; try { //p1插入成功 Person p1 = new Person() { id = 100, name = "hans" }; _dataContext.GetTable<Person>().InsertOnSubmit(p1); _dataContext.SubmitChanges(); //p2.id=101已存在,插入不成功,通过事务处理,会将p1插入操作回滚,插入失效 Person p2 = new Person() { id = 101, name = "hdu" }; _dataContext.GetTable<Person>().InsertOnSubmit(p2); _dataContext.SubmitChanges(); tran.Commit(); } catch (Exception ex) { tran.Rollback(); }
二、优化建议
1、筛选需要的字段(与选择全部字段相比,效率相差好几倍)。
var sql = from c in tb select new { EUserName:c.EUserName,AreaDepName:c.AreaName +c.DeaprtName};
2、多次循环查询_dataContext.GetTable<FS_Employee>时,将table事先序列化成List,避免每次去读取数据库。
3、考虑是否可以省去ToList,这个过程非常耗费时间。
4、经上述优化,查询仍然非常慢,可考虑使用并行查询。
var sql = from c in tb.AsParallel() select new { EUserName:c.EUserName,AreaDepName:c.AreaName +c.DeaprtName};
浙公网安备 33010602011771号