我有一个Linq查询,用于搜索句子中的特定单词。但是我希望这个特定的单词不区分大小写。这样您就可以搜索Action
或action
。
我的Linq查询如下所示:
var bookFilter = new List<Book> {
new Book { Title = "LINQ in Action" },
new Book { Title = "LINQ for Fun" },
new Book { Title = "Extreme LINQ" } };
var titles =
from booksss in bookFilter
where string.Equals(booksss.Title,
"Action",
StringComparison.InvariantCultureIgnoreCase)
select booksss.Title;
ObjectDumper.Write(titles);
但是什么都没有回来?
答案 0 :(得分:4)
您想要检查Title
是否包含字符串。但是,Contains
本身没有带有StringComparison
参数的重载,但您可以轻松地使用IndexOf
。
var bookFilter = new List<Book>() {
new Book { Title = "LINQ in Action" },
new Book { Title = "LINQ for Fun" },
new Book { Title = "Extreme LINQ" } };
...
var titles = bookFilter
.Select(book => book.Title)
.Where(title => title
.IndexOf("Action", StringComparison.InvariantCultureIgnoreCase) >= 0);
答案 1 :(得分:1)
如果您的数据源实际上是实体框架,那么只需将其添加为答案,因为它无法理解如何处理Contains
。您有两种选择:
将ToLower
与ToUpper
结合使用(如果您是反叛者,则使用//Make sure the search value is lower case
var search = "Action".ToLower();
var titles =
from booksss in bookFilter
where booksss.Title.ToLower().Contains(search)
select booksss.Title;
):
$app->json()