linq中的关键字搜索

本文关键字:搜索 关键字 linq | 更新日期: 2023-09-27 17:53:39

在视图的表单中有三个字段:

[Textfield] : Name  
[Dropdown]  : Sector  
[Dropdown]  : Country  

我的要求是通过控制器方法中的这三个关键字过滤结果,并且首先按接收日期然后按名称排序结果。

有很多可能性,例如:如果Name匹配和Sector匹配进行过滤等。

我可以用if else或任何其他繁琐的方式做到这一点,但我如何在LINQ中在一个语句中做到这一点。我需要返回一个列表

linq中的关键字搜索

如果您只需要简单的搜索来发现您的某些列包含指定的字符串,请尝试这样做。

// dc is some datacontext
var query = dc.MyEntities.Where(x=> x.Name.Contains(inputName) ||
                                    x.Sector.Contains(inputSector) ||
                                    x.Contry.Contains(inputCountry))
                         .OrderBy(x=> x.receivedDate)
                         .ThenBy(x=> x.Name);
var resultList = query.ToList();

还要检查(设置)数据库的排序,以便根据您的需要进行区分大小写(CS)或不区分大小写(CI)的搜索。但是,要在CS排序中进行不区分大小写的搜索,您需要使用ToUpper()扩展上面的代码。

x.Name.ToUpper().Contains.(inputName.ToUpper());

但是注意,它不会通过火鸡测试:-)-大写i和小写i有一些奇怪的地方。

这里也是关于不区分大小写的.Contains(string)的有趣资源:不区分大小写'Contains(string)'

如果需要一些复杂的全文搜索。我会查找:

  • TSQL全文搜索-但它需要一些努力,使它与LINQ到SQL工作:是否有可能使用全文搜索(FTS)与LINQ?
  • LUCENE。NET也是全文搜索的好选择。但它没有与LINQ集成(但是你可以尝试这个项目:LinqToLucene -但它目前是Alpha版本)

看一下这个解决方案,看看它是否能帮助您实现预期的目标:使用linq

搜索关键字

感谢所有回答我问题的人。找到了我一直在寻找的答案,希望它能帮助别人。

http://blog.tech-cats.com/2008/01/using-optional-parameters-in-sql-server.html