LINQ to SQL匹配使用可能的通配符

时间:2013-09-30 21:17:27

标签: c# sql-server linq-to-sql

我正在使用LINQ to SQL在数据库中查找具有与字符串变量匹配的名称的记录。此变量的值来自URL,并且任何空格都替换为用于SEO的破折号:mysite.com/what-i-need-to-find

用空格替换破折号很容易进行查找,但如果我正在查找的记录实际上在名称中有破折号怎么办?

例如,我正在寻找的记录被命名为“John to-do list”,我正在使用值“John-to-do-list”

var Item = Items.List().FirstOrDefault(i => i.Name == "John to do list"); //obviously doesn't get what I need

有没有办法使用通配符或其他方法取回这个项目?

2 个答案:

答案 0 :(得分:1)

我会尝试这样的事情。 var Item = Items.List().FirstOrDefault(i => i.Name.Like("%John%to%do%list%"));

答案 1 :(得分:0)

我建议您避免将空格更改为您网址中合法的字符。我解决这个问题的方法是在我的数据库中使用别名,例如。

您有一个笔记的标题,并且您想要在网址中显示它。标题是“今天我的待办事项列表”,并存储在数据库的一列中。然后我会添加第二列,以存储我想要在url中显示的内容(也可以将其编入索引)。例如“my-to-do-list-for-today”,您只需在创建项目时解析一次。