У меня есть запрос LINQ, который ищет несколько ключевых слов в нескольких столбцах.Предполагается, что пользователь может искать несколько ключевых слов, и он будет искать ключевые слова в каждом свойстве моего объекта Media
.Вот упрощенный пример:
var result = repository.GetAll<Media>().Where(x =>
x.Title.Contains("Apples") || x.Description.Contains("Apples") || x.Tags.Contains("Apples") ||
x.Title.Contains("Oranges") || x.Description.Contains("Oranges") || x.Tags.Contains("Oranges") ||
x.Title.Contains("Pears") || x.Description.Contains("Pears") || x.Tags.Contains("Pears")
);
Другими словами, я хочу найти ключевые слова Apples
, Oranges
и Pears
в столбцах Title
, Description
иTags
.
Вывод SQL выглядит следующим образом:
SELECT *
FROM Media this_
WHERE ((((((((
this_.Title like '%Apples%'
or this_.Description like '%Apples%')
or this_.Tags like '%Apples%')
or this_.Title like '%Oranges%')
or this_.Description like '%Oranges%')
or this_.Tags like '%Oranges%')
or this_.Title like '%Pears%')
or this_.Description like '%Pears%')
or this_.Tags like '%Pears%')
Является ли это наиболее оптимальным SQL в этом случае?Если нет, то как мне переписать запрос LINQ, чтобы создать наиболее оптимальный оператор SQL?Я использую SQLite для тестирования и SQL Server для реального развертывания.