Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个属性上的C#Lambda.Contains()_C#_Search_Lambda_Contains - Fatal编程技术网

多个属性上的C#Lambda.Contains()

多个属性上的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(); 使

我们使用以下命令生成搜索查询(使用NHibernate)

是否可以搜索(包含)多个属性,例如

    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%')