SQL для LINQ с предложением IN - PullRequest
2 голосов
/ 02 апреля 2019

Backround:

В моей базе данных есть одна таблица, которую я использую для регистрации звонков в различные веб-службы.

Каждая запись журнала связана с GUID (CorrelationID), который связывает все записи журнала для определенного веб-запроса.

При поиске в журналах определенной части данных (например, имени человека) я могу получить одну запись журнала, содержащую эту информацию, но я хочу показать все записи журнала, относящиеся к тому же запросу.

НАСТОЯЩЕЕ:

Для достижения желаемых результатов в SQL я использую этот запрос:

SELECT * FROM Logging WHERE CorrelationId IN (SELECT DISTINCT CorrelationId FROM Logging WHERE Message like '%fred%') ORDER BY Datetime

ПРОБЛЕМА:

Я хотел бы преобразовать этот запрос в LINQ to Entities.

Все, что у меня есть на данный момент, это главный выбор

var records = db.Loggings.Where(x => x.Datetime >= fromDate && x.Datetime < toDate)
                .Where(x => x.Message.Contains("fred"))
                .OrderBy(x => x.Datetime).AsQueryable();

Я не могу определить правильный синтаксис для добавления части IN.

Я следовал другим SO-ответам на подобные вопросы, но все еще не могу заставить это работать для моего конкретного сценария.

1 Ответ

2 голосов
/ 02 апреля 2019

Делайте работу так:

var subQuery = records.Where(x => x.Datetime >= fromDate && x.Datetime < toDate && x.Message.Contains("fred")).Select(x => x.CorrelationID).Distinct();

var result = records.Where(x => subQuery.Contains(x.CorrelationID)).OrderBy(x => x.Datetime).AsQueryable();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...