Linq 查询包含值

仙剑 2011-08-10 09:53:46
有一个数组 myArray={1,2,3,4,5}

我想用Linq查询表 customers中的所有customer_class_id在myArray中的记录,应该怎么写Linq语句呀
...全文
116 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
a124819202 2011-08-10
  • 打赏
  • 举报
回复
学习!
namhyuk 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 namhyuk 的回复:]
请教 1 楼 fangxinggood
var result = context.customers.Where(p => ints.Any(c => c == p.customer_class_id));

为什么它生成的数据库语句看似更复杂,但貌似执行效果更高?
[/Quote]
我弄错了,在int数组2,3个的时候显得更快,不过5个时就已经不行了。

请无视4、5楼我的回复。
namhyuk 2011-08-10
  • 打赏
  • 举报
回复
[Quote=请教 1 楼 fangxinggood]
var result = context.customers.Where(p => ints.Any(c => c == p.customer_class_id));
[/Quote]
为什么它生成的数据库语句看似更复杂,但貌似执行效果更高?
q107770540 2011-08-10
  • 打赏
  • 举报
回复
var query=from c in db.customers
where new int[]{1,2,3,4,5}.Contains(c.customer_class_id)
select c;

http://blog.csdn.net/q107770540/article/details/5387946
namhyuk 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fangxinggood 的回复:]
var query = db.customers.Where(c => myArray.Contains(c.customer_class_id));
[/Quote]
学习!

通过SQL Profiler可以看出在foreach开始时会执行类似如下SQL语句:

SELECT
[Extent1].[字段名] AS [字段名],
……
FROM [dbo].[表名] AS [Extent1]
WHERE [Extent1].[customer_class_id] IN (1,2,3,4,5)
机器人 2011-08-10
  • 打赏
  • 举报
回复
var query = db.customers.Where(c => myArray.Contains(c.customer_class_id));
仙剑 2011-08-10
  • 打赏
  • 举报
回复
感谢各位贴友,学习了!

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧