public bool CheckCard(string cardNO)
{
bool flag = false;
string last= cardNO.Substring(17,1); //截取身份证号码最后一位
int[] ai = new int[17]; //证件号数组
int[] wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; //
int sum = 0;
for (int i = 0; i < cardNO.Length-1; i++)
{
ai[i] = int.Parse(cardNO.Substring(i,1));
}
for (int i = 0; i < wi.Length; i++)
{
sum = sum + ai[i] * wi[i];
}
int y = sum % 11;
if (last.Equals("X") || last.Equals("x"))
{
if (y == 2)
{
flag = true;
}
else
{
flag = false;
}
}
else
{
switch (last)
{
case "1":
if(y==0)
{
flag = true;
}
break;
case"0":
if (y == 3)
{
flag = true;
}
break;
case"9":
if(y==3)
{
flag = true;
}
break;
case"8":
if(y==4)
{
flag = true;
}
break;
case"7":
if(y==5)
{
flag=true;
}
break;
case"6":
if(y==6)
{
flag = true;
}
break;
case"5":
if(y==7)
{
flag=true;
}
break;
case"4":
if(y==8)
{
flag = true;
}
break;
case"3":
if(y==9)
{
flag=true;
}
break;
case"2":
if(y==10)
{
flag = true;
}
break;
default:
break;
}
}
return flag;
}