日期:2014-05-20  浏览次数:20843 次

根据链表查询数据库
有张数据表,其中一个字段为id。c#程序里读取文件生产一个id链表,要根据这个链表筛选数据。现在的解决方式是把整张表读入内存,用linq to dataset 的 join on查询。但因为数据表很大 占内存太多了。想请教下有什么更好的解决方式。
C#? 数据库 链表

------解决方案--------------------
  不能拆分读取 一次读取 你做JOIN 内存开销肯定大
------解决方案--------------------
最简单且容易理解的方法,在SQLSERVER里用in操作
SELECT 需要的字段1,字段2,字段3,...字段N FROM [表] WHERE objid IN(5,10,269,...,39405,39406)

------解决方案--------------------
var hs=new HashSet<int>(new int[]{5,10,269,....,39405,39406});

var query= from x in db.YourTable
           where  hs.Contains(x.objId)     
           select x;
数据量较大时,用HashSet  会更好些