我有一个形式三个字段的视图:关键字搜索
[Textfield] : Name
[Dropdown] : Sector
[Dropdown] : Country
我的要求是通过在控制器方法这三个关键字来过滤结果,并且还通过接收日期首先命令结果然后按名称。
有这么多的可能性,例如:如果Name
比赛和Sector
比赛做过滤等
我可以if else
或与任何其他麻烦的方式做到这一点,但我怎么能在一个声明中这样做的LINQ 。我需要返回一个列表。
我有一个形式三个字段的视图:关键字搜索
[Textfield] : Name
[Dropdown] : Sector
[Dropdown] : Country
我的要求是通过在控制器方法这三个关键字来过滤结果,并且还通过接收日期首先命令结果然后按名称。
有这么多的可能性,例如:如果Name
比赛和Sector
比赛做过滤等
我可以if else
或与任何其他麻烦的方式做到这一点,但我怎么能在一个声明中这样做的LINQ 。我需要返回一个列表。
谢谢大家谁回答我的问题。找到我正在寻找的答案,并希望它能帮助其他人。
http://blog.tech-cats.com/2008/01/using-optional-parameters-in-sql-server.html
很好,你已经找到了解决你的问题。但是,它与您所问的有关LINQ的问题无关。 ;-) – mipe34
看一看这个解决方案,看看它是否可以帮助你实现你的理想目标:如果你只需要简单的搜索,找出你的一些列包含指定的字符串,尝试这样的事情search keywords using 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());
但要注意,它不会通过Turkey test :-) - 有什么奇怪与uppercasing他们我和lowercasing 我。
这里也是上不区分大小写.Contains(string)
有趣的资源:Case insensitive 'Contains(string)'
如果你需要一些复杂的全文搜索。我会找:
我编辑了您的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –
你能给更多的信息或代码你试过 –
谢谢大家谁回答我的问题。找到我正在寻找的答案,并希望它能帮助其他人。 http://blog.tech-cats.com/2008/01/using-optional-parameters-in-sql-server.html –