我在视图的表单中有三个字段:
[Textfield] : Name
[Dropdown] : Sector
[Dropdown] : Country
我的要求是通过控制器方法中的这三个关键字过滤结果,并且首先按接收日期然后按名称对结果进行排序。
有很多可能性,例如:如果Name
匹配和Sector
匹配进行过滤等。
我可以使用if else
或使用任何其他繁琐的方式来做到这一点,但是我怎样才能在 LINQ 中在一个语句中做到这一点。我需要返回一个列表。
我在视图的表单中有三个字段:
[Textfield] : Name
[Dropdown] : Sector
[Dropdown] : Country
我的要求是通过控制器方法中的这三个关键字过滤结果,并且首先按接收日期然后按名称对结果进行排序。
有很多可能性,例如:如果Name
匹配和Sector
匹配进行过滤等。
我可以使用if else
或使用任何其他繁琐的方式来做到这一点,但是我怎样才能在 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)
:不区分大小写的“包含(字符串)”
如果您需要一些复杂的全文搜索。我会寻找:
看看这个解决方案,看看它是否可以帮助您实现您想要的目标:使用 linq 搜索关键字
感谢所有回答我问题的人。在下面找到了我正在寻找的答案,并希望它对其他人有所帮助。
http://blog.tech-cats.com/2008/01/using-optional-parameters-in-sql-server.html