Пользовательская сортировка в C # LINQ с LAMBDA - PullRequest
1 голос
/ 23 сентября 2019

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

У меня есть запрос SQLSERVER, чтобы выбрать userId с пользовательским предложением Order By.Примерно так:

SELECT userID
FROM users
WHERE userName like '%whatever%'
ORDER BY 
 CASE
  WHEN UserID = 123 THEN 0
  WHEN UserID = 456 THEN 1
  WHEN UserID = 789 THEN 2
  ELSE 3
 END ASC,
 UserID

Итак, как мне воспроизвести ту же структуру Order By, но используя LINQ с LAMBDA в C #?

Вот мой код:

var userID = db.User.Where(x => x.userName.Contains("whatever").OrderBy(x => x.userID).Select(x => x.userID).ToList();

1 Ответ

1 голос
/ 23 сентября 2019
ORDER BY 
 CASE
  WHEN UserID = 123 THEN 0
  WHEN UserID = 456 THEN 1
  WHEN UserID = 789 THEN 2
  ELSE 3
 END ASC,
 UserID

функционально эквивалентен этой лямбде

.OrderBy(_ => _.userID == 123 ? 0 : _.userID == 456 ? 1 : _.userID == 789 ? 2 : 3)
.ThenBy(_ => _.userID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...