Примерно эквивалентные запросы в LINQ и SQL возвращают разные результаты [дубликаты]

На этот вопрос уже есть ответ:

Entity Framework отображает данные неправильно, когда столбец идентификаторов не является уникальным 1 ответ

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

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

LINQ

List<Uno> result = context.Unos
  .Join(context.Duos, uno => uno.CommonId, duo => duo.CommonId,
    (uno, duo) => new { Uno = uno, Duo = duo })
  .Where(item => item.Uno.Amount > 0
    && item.Duo.Type == 2)
  .Select(item => item.Uno)
  .ToList();

SQL

select * from Uno as u
join Duo as d on d.CommonId = u.CommonId
where u.Amount > 0
  and d.Type = 2

Вопрос номер один, если два приведенных выше утверждения действительно эквивалентны или я что-то упустил. Вопрос номер два: что мне не хватает (если вообще что-нибудь) или как это сделать, если не так?

Звонки сделаны на одну и ту же базу данных. Числа результатов сильно различаются (142 и 1437). Те же наборы результатов выбираются для внутреннего объединения.И то и другое Uno а такжеДуэ - это представления, а не таблицы.

Что еще я могу проверить?

Редактироват

После некоторой удивительной поддержки со стороны сообщества мы установили, что запрос LINQ может быть SQL'изложен следующей командой.

var wtd = context.Unos
  .Join(context.Duos, uno => uno.CommonId, duo => duo.CommonId,
    (uno, duo) => new { Uno = uno, Duo = duo })
  .Where(item => item.Uno.Amount > 0
    && item.Duo.Type == 2)
  .Select(item => item.Uno)
  .ToString();

Сумасшедшая вещь - это выполнениечт string в SQL Manager выдает 142 результата (так же, как запрос в примере выше, версия SQL) и отличается от него лишь незначительно. Однако выполнение самого запроса LINQ дает 1437 результатов. Я слишком смущен, чтобы даже начать плакать ...

"SELECT \ r \ n [Extent1]. [CommonId] AS [CommonId], \ r \ n [Extent1]. [X] AS [X] \ r \ n ОТ (SELECT \ n [Uno]. [CommonId] AS [CommonId], \ n [Uno]. [X] AS [X] \ n ОТ [Финансы]. [Uno] AS [Uno]) AS [Экстент1] \ r \ n ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ \ n [Duo] . [CommonId] AS [CommonId], \ n [Duo]. [Y] AS [Y], \ n [Duo]. [Z] AS [Z], \ n [Duo]. [Тип] AS [Тип] , \ n [Duo]. [U] AS [U], \ n [Duo]. [V] AS [V] \ n ОТ [Финансы]. [Duo] AS [Duo]) AS [Экстент2] ВКЛ [Экстент1 ]. [CommonId] = [Extent2]. [CommonId] \ r \ n ГДЕ ([Extent1]. [X]> приведение (0 как десятичное число (18))) И ([Extent2]. [Type] = @ p__linq__0)

Ответы на вопрос(3)

Ваш ответ на вопрос