I am having two list<string> as follows 
listA is having the following values 10,20,30,40  and
listB is having the following values 10,20,30
If listB contains listA elements i would like to enable particular controls if not i would like to disable the Controls
I tried of using two loops as follows
for(int ilist1=0;ilist1<listA.count;ilist1++)
{
  for(int ilist2=0;ilist2<listB.count;ilist2++)
  {
      if(listA[ilist1]==listB[ilist2])
      {
           //Enable particular control
      }
  }
}
But i know this is not an appropriate one to do so can any one tell me the 开发者_StackOverflowbest approach to achieve this
What you want to do is to hash the items in the first list into a set then verify for each item in the second is within the set.  Unfortunately the HashSet<> is not available so the closest you can get is the Dictionary<,>.
Do this:
Dictionary<string, string> set = new Dictionary<string, string>();
foreach (string item in listA)
{
    set.Add(item, item);
}
foreach (string item in listB)
{
    if (!set.ContainsKey(item))
    {
        //Enable particular control
    }
}
It's easy by using the Intersect method:
    if (listB.Intersect(listA).Count() > 0)
    {
        //enable Control
    }
    else
    {
        //disable control
    }
I think you are looking for something like this
List<string> lista = new List<string>() {"10","40","30" };
List<string> listb = new List<string>() { "10", "20" };
var diff = listb.Except<string>(lista);
diff should give you the ones which didn't match else all would have been matched.
For 2.0
if (listb.TrueForAll(delegate(string s2) { return lista.Contains(s2); }))
                MessageBox.Show("All Matched");
            else
                MessageBox.Show("Not Matched");
In fx 2.0, you can do it like this:
    string b = listA.Find(delegate(string a) { return listB.Contains(a); });
    if (string.IsNullOrEmpty(b))
    {
        //disable control
    }
    else
    {
        //enable control
    }
Control.Enabled = listB.Intersect(listA).Any()
Note that Any() will only check to see if there is at least one item. Count() > 0 will evaluate the entire collection when you only need to check if there is at least one item
Edit: If you are in a .NET 2.0 environment then you can loop through and do this:
foreach (int item in listB)
{
    if (listA.Contains(item))
       return true;
}
return false;
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论