Группировать данные с помощью SQL, Lamda или LINQ - PullRequest
2 голосов
/ 09 мая 2019

Я хотел бы спросить, возможно ли получить данные из базы данных с помощью SQL или обновить список с помощью Lambda или Linq.

Данные в базе данных или в списке

  CompanyName         MainName       ChildName
  --------------------------------------------------
  Company1              ABC           
  Company2                             ABC
  Company3              XWY           
  Company4              TTT           
  Company5                             XWY           
  Company6                             ABC
  Company7                             TTT
  Company8                             TTT           

Что мне нужно

  CompanyName         MainName       ChildName
  --------------------------------------------------
  Company1              ABC           
  Company2                             ABC
  Company6                             ABC  
  Company4              TTT           
  Company7                             TTT
  Company8                             TTT
  Company3              XYZ            
  Company5                             XYZ

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

Ответы [ 2 ]

4 голосов
/ 09 мая 2019

Вам нужно условно order by:

order by (case when MainName is null then ChildName else MainName end), ChildName;
1 голос
/ 09 мая 2019

В C # вы можете написать альтернативно на данный ответ:

static void Main(string[] args)
{
  List<Company> companies = new List<Company>();
  companies = companies
    .OrderBy(c => c.MainName == null ? c.ChildName : c.MainName)
    .ToList();
}

class Company
{
  public string CompanyName { get; set; }
  public string MainName { get; set; }
  public string ChildName { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...