包含asp.net中的函数

包含asp.net中的函数,asp.net,Asp.net,我试图通过使用Contains函数比较两个字符串来增加计数。 我的密码是 int count = 0; string strSize = ""; for (int i = 0; i < dts.Rows.Count; i++) { strSize += dts.Rows[i]["sizeid"].ToString() + ","; } if (strSize.Length > 0) strSize = strSize.Substring(0,

我试图通过使用Contains函数比较两个字符串来增加计数。 我的密码是

  int count = 0;
string strSize = "";
 for (int i = 0; i < dts.Rows.Count; i++)
    {
    strSize += dts.Rows[i]["sizeid"].ToString() + ",";
    }


 if (strSize.Length > 0)
  strSize = strSize.Substring(0, strSize.Length - 1);
// After executing  strSize="3,4,5,10"

if (strMainSize.Length > 0)
    strMainSize = strMainSize.Substring(0, strMainSize.Length - 1);
// After executing  strMainSize ="1,2,3,4,5,10,45"

   strM = strMainSize.Split(',');


 for (int s = 0; s < strM.Length; s++)
   { 
       if (strSize.Contains(strM[s]))
         {
            count++;
            chkSize.Items.FindByValue(strM[s]).Selected = true;
         }
   }
var totalCount = count;
int count=0;
字符串strSize=“”;
对于(int i=0;i0)
strSize=strSize.Substring(0,strSize.Length-1);
//执行strize=“3,4,5,10”后
如果(strMainSize.Length>0)
strMainSize=strMainSize.Substring(0,strMainSize.Length-1);
//执行strMainSize=“1,2,3,4,5,10,45”后
strM=strMainSize.Split(',');
对于(int s=0;s
执行此操作后,totalCount应该等于4,但它给了我5,这意味着当它第一次检查strSize.Contains(strM[s])的条件时,它得到的是true而不是false。 有谁能告诉我为什么会这样

其他事情当我在其他应用程序中执行相同操作时,它工作正常

我写的代码是

 int count=0;
        string[] str = { "3", "4", "5", "10"};
        string[] strM = {"1","2","3","4","5","10","45","50" };
        for (int s = 0; s < strM.Length; s++)
        {

            var stM = strM[s];
            if (str.Contains(strM[s]))
            {
                count++;
                chkSize.Items.FindByValue(strM[s]).Selected = true;
            }
        }

        int totalCount = count;
int count=0;
字符串[]str={“3”、“4”、“5”、“10”};
字符串[]strM={“1”、“2”、“3”、“4”、“5”、“10”、“45”、“50”};
对于(int s=0;s
此处o/p:totalCount=4。
有人能告诉我两者的区别吗。

strize.Contains(strM[s])
为1返回true,因为1包含在字符串
3,4,5,10
中。区别在于第一个代码查找子字符串,而第二个代码比较整个字符串


表达式
“3,4,5,10”。包含(“1”)
返回true。

好的,这里是交易,第一个代码的strSize只是一个简单字符串,第二个代码的strSize是一个字符串数组


因此,当您在第一个代码中说.contains时,它将查看整个字符串,并检查您是否正在查找,因此“3,4,5,10”中包含1,而且如果您在第一个代码中尝试strSize.indexof(“10”),它将为您提供6。另一方面,如果您在第二个代码上尝试str.ToList().IndexOf(“10”),它将为您提供3。或者,如果您使用“1”,第一个代码仍将返回6,但第二个代码将返回-1,因为它没有找到元素“1”“在数组上。

是的,正如Guffa所说,您正在搜索一个字符串,因此如果该字符串包含您的子字符串,它将返回true,您应该使用第二种方法,或者使用类似的代码进行修复


对于(int s=0;s
if(strSize.Contains(searchStr))
{
计数++;
chkSize.Items.FindByValue(strM[s]).Selected=true;
}
}

为了使此代码正常工作,如果您的代码只是为此目的编写的,则不应从strize中删除最后一个“,”

for (int s = 0; s < strM.Length; s++) { stirng searchStr = strM[s]+',';
if (strSize.Contains(searchStr)) { count++; chkSize.Items.FindByValue(strM[s]).Selected = true; } }