Результат Linq Sql Query отличается от SQL-запроса, выполняемого в базе данных - PullRequest
0 голосов
/ 16 апреля 2019

Когда я запускаю запрос в коде C # с использованием Linq, возвращаемый результат отличается от запроса SQL, запускаемого на сервере sql

SQL-запрос

SELECT TOP (1000) [Teamid]
  ,[TeamName]
  ,[TemplateId]
  ,[TemplateName]
 FROM [MPFT_SendIT].[dbo].[VMTemplate]
 where
 Teamid=1

Результат

enter image description here

SQL-запрос представления VMTemplate

     SELECT        dbo.Team.Id AS Teamid, dbo.Team.TeamName, 
          dbo.MessageTemplate.Id AS TemplateId, 
            dbo.MessageTemplate.TemplateName
         FROM        dbo.Team INNER JOIN
                     dbo.TemplateLookup ON dbo.Team.Id = 
                    dbo.TemplateLookup.TeamId INNER JOIN
                    dbo.MessageTemplate ON dbo.TemplateLookup.TemplateId = 
                    dbo.MessageTemplate.Id
                     where
                     TeamId= 1

Результат enter image description here

Linq SQL

 var teamid = _db.TeamLookups.Where(i => i.UserId == 20).Select(x => 
  x.TeamId).ToList(); // teamid return value is 1

 ViewBag.messageTemplate = _db.VMTemplates.Where(i => 
 teamid.Contains(i.Teamid));

Запрос Linq возвращает только одну строку записи 1 запроса sql вместо 2 записей, как ожидалось. Любая помощь о том, как решить эту проблему?

1 Ответ

0 голосов
/ 16 апреля 2019

Почему Contains()?Вы должны использовать оператор равенства вместо

_db.VMTemplates.Where(i => teamid == i.Teamid).ToList();

За ваш комментарий, тогда ваше выражение Linq должно работать нормально.Добавьте ToList() к этому

ViewBag.messageTemplate = _db.VMTemplates.Where(i => 
 teamid.Contains(i.Teamid)).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...