Невозможно сравнить объект IEnumerable как строку - PullRequest
0 голосов
/ 25 февраля 2020

Я использую следующий код:

var users = await graphServiceClient.Users.Request().GetAsync(); 
var condition = "test";       
do
{
          foreach (User user in users)
          {
               if(number){
                condition = user.BusinessPhones.ToString();
               }
              else{
               condition=user.DisplayName;
               }

              if (condition.Contains("1234"))
              {
                Console.WriteLine(user.DisplayName);     
                Console.WriteLine(user.BusinessPhones.ToString());

              }
       }
 }

Где user.BusinessPhones имеет тип: -

public IEnumerable<string> BusinessPhones { get; set; }

Но у меня есть переменная условия "condition", которая основана на несколько операторов if else (я показываю только 2 в примере выше).

condition = user.BusinessPhones.ToString (); не работает, но еще условие работает. Поэтому, пожалуйста, помогите мне достичь результата, так как я новичок в C#.

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Использовать LINQ вот так

Из набора пользователей выберите их бизнес-телефоны, если условие выполняется, или выберите их отображаемые имена, проверьте, содержит ли выбранное значение 154 если да, добавьте его в список, перечислите список и напечатайте каждое значение

bool number = true;
var users = new List<User>
{
    new User{DisplayName="User1",BusinessPhones= new [] { "1111","2222","3333"} },
    new User{DisplayName="User2",BusinessPhones= new [] { "4444","2222","5555"} },
    new User{DisplayName="User3",BusinessPhones= new [] { "6666","6666","5555"} },
    new User{DisplayName="User4",BusinessPhones= new [] { "7777","6666","1111"} },
};

// var users = await graphServiceClient.Users.Request().GetAsync();
var userFilter = users                  
                .Where(u => (number) ? u.BusinessPhones.Contains("6666"): u.DisplayName.Any() ).ToList();

userFilter.ForEach( x=>  Console.WriteLine(string.Join("," ,x.BusinessPhones) + " " + x.DisplayName) ) ;

Выходные данные

6666,6666,5555 User3
7777,6666,1111 User4

1 голос
/ 25 февраля 2020

Если вы хотите присвоить список строк (номеров телефонов) переменной condition, вы можете использовать метод string.Join:

condition = string.Join(", ", user.BusinessPhones);

Например, если мы предполагаем, что user.BusinessPhones имеет значения "a", "b" и "c", результат string.Join будет a, b, c.

...