2016-05-16 38 views
-5

我试图在字符串列表,以获得类似这样的用户名:C#“无法从‘字符串[]’转换为‘串’

string[] whitelisted = { "example", "exampøle222", "example245"}; 

if (sentRequest.Sender.Username.ToLower().Contains(whitelisted)) 
+0

你的问题是什么? –

+0

它认为这是一个错误http://prntscr.com/b4i7jk – Mikael

+1

'whitelisted'是一个数组,但'Contains()'需要一个'string'。这是错误信息告诉你的。您可能想要检查用户名是否在“白名单”中,而不是相反。 –

回答

2

要检查如果用户名包含列表你应该检查该列表包含的用户名。

whitelisted.Contains(sentRequest.Sender.Username.ToLower()) 
+0

是不是包含较低的套数? –

+0

@Robert与C#中的大多数方法一样,它是大写字母。 –

+0

你说得对。我的记忆变得模糊不清。 –

1

你比较落后,你需要看数组是否包含字符串。

0

你可能想检查sentRequest.Sender.Username.ToLower()目前在whitelisted列表中,对吗?

然后让它倒if (whitelisted.Contains(sentRequest.Sender.Username.ToLower()))

你得到的错误说,你在呼唤即方法string.Contains()可以接受string但不能接受一个数组string[]

0

它可以很简单地使用LINQ聚合函数来完成。

string[] strings = {"example1","example2"}; 
string result = strings.Aggrigate((l,r)=>l+r); 

你也可以使用的string.join方法

string[] strings = {"example1","example2"}; 
string result = String.Join("",strings); 

然而,当我看着你的代码的其余部分,我会建议解决了这样的问题。

if(whitelisted.IndexOf(sentRequest.Sender.Username.ToLower()) != -1) 

如果只有用户名在白名单中才会执行语句。