不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
LINQ to Entities多条件动态查询实现
编辑:dnawo 日期:2012-12-22
在WEB应用程序中经常会碰到多条件查询,比如查找某个用户,可能根据用户名查询,也可能根据注册时间查询,以前是通过拼接sql完成,那在LINQ to Entities要怎么实现?直接上代码:
在SQL Server Profiler跟踪结果:
这得益于Linq延迟执行功能,使得程序可以将多条件合并查询。将上边代码稍做修改,思考下将怎么执行?哪一种方式更好?
复制内容到剪贴板
程序代码

using (testContext context = new testContext())
{
var query = context.Users.AsQueryable();
//动态查询
string usn = Request.Form["usn"];
if (usn != null)
query = query.Where(u => u.usn == usn);
string ww = Request.Form["ww"];
if (ww != null)
query = query.Where(u => u.wangwang == ww);
Label1.Text = query.Select(u => u.id).First().ToString();
}
{
var query = context.Users.AsQueryable();
//动态查询
string usn = Request.Form["usn"];
if (usn != null)
query = query.Where(u => u.usn == usn);
string ww = Request.Form["ww"];
if (ww != null)
query = query.Where(u => u.wangwang == ww);
Label1.Text = query.Select(u => u.id).First().ToString();
}
在SQL Server Profiler跟踪结果:
复制内容到剪贴板
程序代码

exec sp_executesql N'Select TOP (1)
[Extent1].[id] AS [id]
FROM [dbo].[User] AS [Extent1]
Where ([Extent1].[usn] = @p__linq__0) AND ([Extent1].[wangwang] = @p__linq__1)',N'@p__linq__0 nvarchar(4000),@p__linq__1 nvarchar(4000)',@p__linq__0=N'dnawo',@p__linq__1=N'abc'
[Extent1].[id] AS [id]
FROM [dbo].[User] AS [Extent1]
Where ([Extent1].[usn] = @p__linq__0) AND ([Extent1].[wangwang] = @p__linq__1)',N'@p__linq__0 nvarchar(4000),@p__linq__1 nvarchar(4000)',@p__linq__0=N'dnawo',@p__linq__1=N'abc'
这得益于Linq延迟执行功能,使得程序可以将多条件合并查询。将上边代码稍做修改,思考下将怎么执行?哪一种方式更好?
复制内容到剪贴板
程序代码

using (testContext context = new testContext())
{
var query = context.Users.ToList();
//动态查询
string usn = Request.Form["usn"];
if (usn != null)
query = query.Where(u => u.usn == usn).ToList();
string ww = Request.Form["ww"];
if (ww != null)
query = query.Where(u => u.wangwang == ww).ToList();
Label1.Text = query.Select(u => u.id).First().ToString();
}
{
var query = context.Users.ToList();
//动态查询
string usn = Request.Form["usn"];
if (usn != null)
query = query.Where(u => u.usn == usn).ToList();
string ww = Request.Form["ww"];
if (ww != null)
query = query.Where(u => u.wangwang == ww).ToList();
Label1.Text = query.Select(u => u.id).First().ToString();
}






评论: 0 | 引用: 0 | 查看次数: 5409
发表评论
请登录后再发表评论!