Hoo*_*ody 1 c# linq linq-to-sql
我需要使用过滤器列表过滤linq查询,我计划使用contains方法来执行此操作.所以它看起来像这样.
List<string> filter = new List<string>();
filter.Add("foo");
filter.Add("bar");
//Additional filters go here, max of about 10 filters
var test = dbcontext.books.Where(x => filter.Contains(x.name)).ToList();
Run Code Online (Sandbox Code Playgroud)
此查询后面的表有很多记录(500,000),PK标识字段和我要查询的字段上的索引.
我的问题是在走这条路线之前您是否希望此查询的性能可以接受,或者我应该在这么大的数据集上使用不同的方法?
是的,那应该没事; 那只会转化为
select x.* from [books] x where x.name in (@p0,@p1)
Run Code Online (Sandbox Code Playgroud)
同@p0 = 'foo'
和@p1 = 'bar'
; 只要name
索引它就应该没问题.但是,如果filter
变得非常大,它会变得更有趣.10项听起来不错.我也隐含地假设它不会返回全部500,000 - 但是会限制在一个合理的数字; 如果没有,请考虑添加一些.Take(number)
限制.
如果担心,只需测量它.运行SQL跟踪或使用分析工具非常容易.
归档时间: |
|
查看次数: |
2222 次 |
最近记录: |