LINQ-запрос для выбора конкретных данных - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь написать запрос, который будет возвращать только конкретную информацию, которую мне нужно отобразить в представлении.

У меня есть следующий код:

var companiesWithResponsibleUser = from company in ctx.Companies
   join user in ctx.Users on company.ResponsibleUserId equals user.Id
   group new { company, user } by company.Id into g
   select new
   {
       company = g.Select(t => t.company),
       user = g.Select(t => t.user)
   }; 

Однако этот возвращает полные данные из обеих таблиц, что очень медленно. Мне нужно только название компании, адрес из таблицы компании и ответственный идентификатор пользователя и полное имя из таблицы пользователя.

Как я могу переписать этот запрос так, чтобы он только заполнял эти два объекта данными, которые я хочу?

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Я не уверен, но вы можете попробовать это:

var companiesWithResponsibleUser = (from company in ctx.Companies
                                               join user in ctx.Users on 
                                   company.ResponsibleUserId equals user.Id
                                   select company.CompanyName,company.Address,user.Userid,user.UserFullName).ToList();


var Res = (from x in companiesWithResponsibleUser
  group x by new
  {
      x.CompanyName,
      x.Userid
  } into g
  select new {g.key.CompanyName, g.Address,g.key.Userid,g.UserFullName}).ToList();

Вы можете добавить эту часть, если возникнет ошибка g.Address

  x.CompanyName,
  x.Userid,
  x.Address

, если поле не существует в select тогда пользователь g.key.Address

0 голосов
/ 21 января 2019

Следующее должно помочь вам:

var companiesWithResponsibleUser  = from company in ctx.Companies
       join user in ctx.Users on company.ResponsibleUserId equals user.Id
       group new { company, user } by company.Id into g
       select new
       {
           companyname = g.company.CompanyName
           address= g.company.Address,
           userid = g.user.UserId,
           fullname= g.user.FullName
       };

Обратите внимание, что я не проверял это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...