根据链表查询数据库
有张数据表,其中一个字段为id。c#程序里读取文件生产一个id链表,要根据这个链表筛选数据。现在的解决方式是把整张表读入内存,用linq to dataset 的 join on查询。但因为数据表很大 占内存太多了。想请教下有什么更好的解决方式。
------解决方案-------------------- 不能拆分读取 一次读取 你做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 会更好些