无法将 IEnumerable 对象作为字符串进行比较

Unable to compare IEnumerable object as string

我正在使用以下代码:

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)。

条件=user.BusinessPhones.ToString();不起作用,但其他条件有效。 所以,请帮助我实现结果,因为我是 C# 的初学者。

谢谢。

如果要将字符串列表(电话号码)分配给 condition 变量,则可以使用 string.Join 方法:

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

例如,如果我们假设 user.BusinessPhones 的值为 "a"、"b" 和 "c",则 string.Join 的结果将为 a, b, c.

像这样使用 LINQ

从一组用户中,select 他们的商务电话,如果条件为真,否则 select 他们的显示名称,检查 selected 值是否包含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