多个属性上的C#Lambda.Contains()
我们使用以下命令生成搜索查询(使用NHibernate) 是否可以搜索(包含)多个属性,例如多个属性上的C#Lambda.Contains(),c#,search,lambda,contains,C#,Search,Lambda,Contains,我们使用以下命令生成搜索查询(使用NHibernate) 是否可以搜索(包含)多个属性,例如 GetAll(x => x.Username.ToUpper().Contains(SEARCH) && x => x.Firstname.ToUpper().Contains(SEARCH) && x => x.Lastname.ToUpper().Contains(SEARCH)).ToList(); 使
GetAll(x => x.Username.ToUpper().Contains(SEARCH)
&& x => x.Firstname.ToUpper().Contains(SEARCH)
&& x => x.Lastname.ToUpper().Contains(SEARCH)).ToList();
使用C#
我想你可能会想在以下网站上搜索:
GetAll(x => x.Username.ToUpper().Contains(SEARCH)
|| x.Firstname.ToUpper().Contains(SEARCH)
|| x.Lastname.ToUpper().Contains(SEARCH)).ToList();
试试看
它将允许以下语法:
var result = GetAll().Search("search",
x => x.Username,
x => x.Firstname,
x => x.Lastname)
.ToList();
与sql一起使用时,将产生如下结果:
SELECT [Extent1].[Id] AS [Id],
[Extent1].[Username] AS [Username],
[Extent1].[Firstname] AS [Firstname],
[Extent1].[Lastname] AS [Lastname]
FROM [dbo].[Users] AS [Extent1]
WHERE ([Extent1].[Username] LIKE N'%search%')
OR ([Extent1].[Firstname] LIKE N'%search%')
OR ([Extent1].[Lastname] LIKE N'%search%')
。。。这意味着所有的工作都是在数据源上完成的,而不是在内存中
有关源代码,请查看github页面:
谢谢你,尼克。。。你说得对。这正是我感兴趣的语义学。真不敢相信这么简单。。。答复+1@Hugusta:单击左侧的勾号接受答案。是的,我打算。因为时间的限制,我以前不能去,然后就分心了。现在,点击按钮让我全神贯注!看这个。。。。。
var result = GetAll().Search("search",
x => x.Username,
x => x.Firstname,
x => x.Lastname)
.ToList();
SELECT [Extent1].[Id] AS [Id],
[Extent1].[Username] AS [Username],
[Extent1].[Firstname] AS [Firstname],
[Extent1].[Lastname] AS [Lastname]
FROM [dbo].[Users] AS [Extent1]
WHERE ([Extent1].[Username] LIKE N'%search%')
OR ([Extent1].[Firstname] LIKE N'%search%')
OR ([Extent1].[Lastname] LIKE N'%search%')