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[color=red].ToList()[/color];
//动态查询
string usn = Request.Form["usn"];
if (usn != null)
query = query.Where(u => u.usn == usn)[color=red].ToList()[/color];
string ww = Request.Form["ww"];
if (ww != null)
query = query.Where(u => u.wangwang == ww)[color=red].ToList()[/color];
Label1.Text = query.Select(u => u.id).First().ToString();
}
评论(0)
暂无评论。