string[] SelectedAccessZonesArray = SelectedAccessZones.Trim().Split(' ');
string[] OldSelectedAccessZonesArray = OldSelectedAccessZones.Trim().Split(' ');
string[] UnchangedAccessZones = SelectedAccessZonesArray.Intersect(OldSelectedAccessZonesArray).ToArray();
string[] DeleteAccessZones = SelectedAccessZonesArray.Except(OldSelectedAccessZonesArray).ToArray();
string[] AddAccessZones = OldSelectedAccessZonesArray.Except(SelectedAccessZonesArray).ToArray();
string[] OldSelectedAccessZonesArray = OldSelectedAccessZones.Trim().Split(' ');
string[] UnchangedAccessZones = SelectedAccessZonesArray.Intersect(OldSelectedAccessZonesArray).ToArray();
string[] DeleteAccessZones = SelectedAccessZonesArray.Except(OldSelectedAccessZonesArray).ToArray();
string[] AddAccessZones = OldSelectedAccessZonesArray.Except(SelectedAccessZonesArray).ToArray();
var A="1,2,3,4,5,6".Split(',');
var B="3,4,5,6,7,8".Split(',');
var UnchangedAccessZones=A.Where(a=>B.Contains(a)).ToArray();
var DeleteAccessZones=A.Except(B).ToArray();
var AddAccessZones =B.Except(A).ToArray();
System.Array不包含Intersect的定义
System.Array不包含Except的定义请问需要导入什么吗或者using什么吗?谢谢
using System.Linq
if (OldSelectedAccessZone != UnchangedAccessZone)
{
IsDelete = true;
}
这里逻辑错误,你应该先指定IsDelete = true,判断有相同才置为false
否则本次执行本来已经匹配上了,又继续循环,可能又把状态改写了.
int[] B = { 3, 4, 5, 6, 7, 8 };
ArrayList UnchangedAccessZones = new ArrayList();
ArrayList DeleteAccessZones = new ArrayList();
ArrayList AddAccessZones = new ArrayList(); for (int i = 0; i < A.Length; i++)
{
if (Array.IndexOf(B, A[i]) != -1)
{
UnchangedAccessZones.Add(A[i]);
}
else
{
DeleteAccessZones.Add(A[i]);
}
}
for (int i = 0; i < B.Length; i++)
{
if (Array.IndexOf(A, B[i]) == -1)
{
AddAccessZones.Add(B[i]); }
}
就可以用if(ArrayList.Contains())去判断了,这样逻辑不容易出问题