无法将 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
我正在使用以下代码:
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