欢迎光临

木子屋

标题: LINQ to Entities多条件动态查询实现

作者: dnawo

日期: 2012-12-22 04:38 PM

分类: Web编程

内容: 在WEB应用程序中经常会碰到多条件查询，比如查找某个用户，可能根据用户名查询，也可能根据注册时间查询，以前是通过拼接sql完成，那在LINQ to Entities要怎么实现？直接上代码：
复制内容到剪贴板 程序代码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();
}
在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'
这得益于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();
}

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.938 ms

返回

标题: LINQ to Entities多条件动态查询实现

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.938 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.953 ms

返回