IEnumerable<T> 会直接加载所有数据到内存,然后再筛选。是先从数据库取出数据放入内存,然后在本地调用SKip 和 Take 等扩展方法
IQueryable<T> 会先翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。
所以在使用ORM、linq等的时候注意这两个接口,考虑好内存
...........
using (var db = new YourEntitys())
{//linq组合查询
var query = from a in db.YourTable
select a;
if (YourTableDto.SystemId>0)
{
query = query.Where(p=>p.Id==YourTableDto.Id);
}
if (!string.IsNullOrEmpty(YourTable.Name))
{
query = query.Where(p => p.Name.Contains(YourTableDto.CategoryName));
}
..........
查找指定数据的ID

在profilter指定数据库,填入ID

指定要跟踪的表名称,并勾选列

原文:http://www.cnblogs.com/xmai/p/6693405.html