C# 比较字符串未按预期工作

C# 比较字符串未按预期工作,c#,asp.net-mvc,C#,Asp.net Mvc,考虑以下代码片段 var query = (from a in db.MyEntity where a.MyEntityId == id select a.Team).FirstOrDefault(); string userName = userDto.UserName.Replace('.', ' '); string[] teamArray = query.Split(new char[]

考虑以下代码片段

var query = (from a in db.MyEntity
                         where a.MyEntityId == id
                         select a.Team).FirstOrDefault();

string userName = userDto.UserName.Replace('.', ' ');
string[] teamArray = query.Split(new char[] { ',' });

for (int i = 0; i < teamArray.Count(); i++)
{
   if (!teamArray[i].Contains(userName, StringComparison.OrdinalIgnoreCase))
      {
         return View("Unauthorized");
      }
}
但它似乎在检查每一个用户名

是的,这正是你在这里所做的

string[] teamArray = query.Split(new char[] { ',' });

for (int i = 0; i < teamArray.Count(); i++)
{
   if (!teamArray[i].Contains(userName, StringComparison.OrdinalIgnoreCase))
   {
       return View("Unauthorized");
   }
}
因此,请使用此
teamArray.Contains(…)
检查
userName
是否在您的
teamArray
中,请参见以下内容:

public static bool Contains(string source, string toCheck)
{
    var results = Array.FindAll(source.split(','), s => s.Equals(toCheck));
    if(results.Length > 0)
        return true;
    else
        return false;
}

谢谢。

那么我是否应该创建一个
IEnumerable
?如果你不知道,你能举个例子吗mind@Code您的
teamArray
是一个
IEnumerable
。只需将您的
for
循环替换为我的上一个代码段。我按照您的建议执行了操作,并收到以下错误消息
“string[]”不包含“Contains”的定义,并且最佳扩展方法重载“Queryable.Contains”(IQueryable,string,IEqualityComparer)'需要'IQueryable')类型的接收器。
@code奇怪,
可枚举。Contains(此IEnumerable…
系统.Linq
命名空间中声明。您的
使用列表中是否有此命名空间?这是一个普通的linq扩展。是的,我确实在我的
列表中使用了它
string[] teamArray = query.Split(new char[] { ',' });
if (!teamArray.Contains(userName, StringComparer.OrdinalIgnoreCase))
    return View("Unauthorized");
public static bool Contains(string source, string toCheck)
{
    var results = Array.FindAll(source.split(','), s => s.Equals(toCheck));
    if(results.Length > 0)
        return true;
    else
        return false;
}