C# List全包含另一个List
class Program
{
static void Main(string[] args)
{
#region 全部包含
List<int> list1 = new List<int>();
list1.Add(1);
list1.Add(2);
list1.Add(2);
list1.Add(2);
List<int> list2 = new List<int>();
list2.Add(3);
list2.Add(2);
list2.Add(2);
list2.Add(1);
Console.Write("list1: ");
for (int i = 0; i < list1.Count; i++)
{
Console.Write(list1[i] + " ");
}
Console.WriteLine();
Console.Write("list2: ");
for (int i = 0; i < list2.Count; i++)
{
Console.Write(list2[i] + " ");
}
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("list1包含list2: " + list2.All(t => list1.Any(b => b == t)));
Console.WriteLine("list2包含list1: " + list1.All(t => list2.Any(b => b == t)));
Console.WriteLine("list1包含list2: " + ContainsAll(list1, list2));
Console.WriteLine("list2包含list1: " + ContainsAll(list2, list1));
Console.WriteLine("list1真包含list2: " + ContainsAll_Really(list1, list2));
Console.WriteLine("list2真包含list1: " + ContainsAll_Really(list2, list1));
Console.WriteLine();
list2.RemoveAll(li => list1.Contains(li));
Console.Write("list1: ");
for (int i = 0; i < list1.Count; i++)
{
Console.Write(list1[i] + " ");
}
Console.WriteLine();
Console.Write("list2: ");
for (int i = 0; i < list2.Count; i++)
{
Console.Write(list2[i] + " ");
}
#endregion;
Console.ReadKey();
}
static bool ContainsAll(List<int> list_A, List<int> list_B)
{
for (int i = 0; i < list_B.Count; i++)
{
if (!list_A.Contains(list_B[i]))
return false;
}
return true;
}
static bool ContainsAll_Really(List<int> list_A, List<int> list_B)
{
List<int> list_1 = new List<int>(list_A);
for (int i = 0; i < list_B.Count; i++)
{
if (!list_1.Contains(list_B[i]))
return false;
else
list_1.Remove(list_B[i]);
}
return true;
}
}