System.Collections.Generic.List <string>'不包含'equals'的定义

时间:2016-11-22 07:36:54

标签: c# asp.net asp.net-mvc

我有这个错误,我不明白为什么..

  

System.Collections.Generic.List'不包含'equals'的定义

我的列表是一个列表&lt;列表&lt;字符串&gt; &GT;

<tbody>
        <tr>
            @{
                int nbItems = ViewBag.listDonnees.Count ;
                bool colore ;
                for(int cpt = 0; cpt < nbItems; cpt++)
                {
                    colore = false ;

                    if(cpt + 1 < nbItems)
                    {
                        colore = @ViewBag.listDonnees[cpt].equals("#FFFFFF") || @ViewBag.listDonnees[cpt].equals("#FFD700") || @ViewBag.listDonnees[cpt].equals("#FF6347") ;
                    }

                    if(colore)
                    {
                        <td style="background-color:@ViewBag.listDonnees[cpt+1]">@ViewBag.listDonnees[cpt]</td>
                        cpt++;
                    }
                    else
                    {
                        <td>@ViewBag.listDonnees[cpt]</td>
                    }
                }
            }
        </tr>
    </tbody>

我尝试使用“==”但我也有这个错误:

  

无法将运算符'=='应用于'System.Collections.Generic.List'和'string'类型的操作数

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

你的问题是:listDonnees [cpt]是一个List,你只需要列出你的List&gt;的内部列表。如果你想知道内部List是否包含 #FFFFFF 你需要使用.Contains()

listDonnees[cpt].Contains("#FFFFFF")

或者您使用第二个(嵌套)for循环来检查每个字符串。 顺便说一句:您可以使用以下方法更轻松地检查:

colore = listDonnees[cpt].Any(s =>new List<String>() {"#FFFFFF", "#FFD700", "#FF6347"}.Contains(s));

特别针对你的问题:

int nbItems = listDonnees.Count ;
var hashCodes = new List<String>() {"#FFFFFF", "#FFD700", "#FF6347"};

for(int cpt = 0; cpt < nbItems; cpt++)
{
    string colorcode = string.Empty;
    if(cpt + 1 < nbItems)
    {
       colorcode = listDonnees[cpt].FirstOrDefault(s => hashCodes.Contains(s));
    }
    if(colorcode != string.Empty)
    {
       <td style="background-color:@colorcode">colorcode</td>
       //cpt++; See below!    
     }
     else
     {
         var str = String.Join(",", listDonnees[cpt]);
         <td>str</td>
     }
     // I Think your cpt++; needs to be here:
     cpt++;
}

我不认识你的模特,所以你可能会改变你的@ViewBag访问。