Linq заменить пустую строку - PullRequest
0 голосов
/ 03 мая 2018

У меня есть оператор linq, я получаю «null» в поле «фамилия» (u.Surname). Я хочу заменить это на «пустое» ключевое слово, прежде чем нажать return, оператор return не вернет строки с пустым.

 var user = await graphClient.Users.Request().GetAsync();
                return JsonConvert.SerializeObject(user.Where(u => !string.IsNullOrEmpty(u.Surname) && ( u.Surname.ToLower().StartsWith(textValue) || u.Surname.ToUpper().StartsWith(textValue.ToUpper()))), Formatting.Indented);

Подарок

Lastname FirstName email 
          ABC       abc@email.com
Something DEF       def@email.com
          ghg       ghg@email.com 

Ожидаемое

Lastname FirstName email 
blank     ABC       abc@email.com
Something DEF       def@email.com
blank     ghg       ghg@email.com 

Не могли бы вы дать мне знать, как это сделать?

Error in the following line

var users = user.Select(u => { u.Surname = u.Surname ?? "blank"; return u; });

1 Ответ

0 голосов
/ 03 мая 2018

У вас также есть это ограничение textValue, было бы намного лучше перенести это в запрос Graph. Это решило бы нулевую проблему в источнике.

Вы можете сложить 3 (!) Теста в один, когда u.surname.ToUpper() .StartsWith(textValue.ToUpper()) вам не нужно проверять другие ToLower () и нейтральные версии.

Но я не уверен, как это сделать в MS Graph.

Если вы все еще хотите фильтровать после запроса:

var user = await graphClient.Users.Request().GetAsync();

var user2 = user
   .Select(u => { u.Surname = u.Surname ?? "blank"; return u; })
   .Where(u => u.surname.ToUpper().StartsWith(textValue.ToUpper())
   ;

return JsonConvert.SerializeObject(user2, Formatting.Indented ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...