该问题来自社区提问,应该用Find方法查找而不是Contains
using
System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication7
{
class Program
{
static void Main( string [] args)
{
List < int [] > alSchedule = new List < int [] > (); // 声明一个存放int[]元素的 集合
alSchedule.Add( new int [] { 1 , 2 , 3 } );
alSchedule.Add( new int [] { 1 , 2 , 3 , 4 } );
int [] result = alSchedule.Find(FindElements);
if (result != null )
{
Console.WriteLine(result);
}
Console.Read();
}
private static bool FindElements( int [] arrInt)
{
return IsEquals(arrInt, new int [] { 1 , 2 , 3 } );
}
public static bool IsEquals(Array array1, Array array2)
{
// 比较类型是否一样
if ( ! Object.ReferenceEquals(array1.GetType(), array2.GetType()))
{
return false ;
}
// 比较长度是否一样
if (array1.GetLength( 0 ) != array2.GetLength( 0 ))
{
return false ;
}
// 比较成员是否对应相等
ValueType v1, v2;
for ( int i = 0 ; i < array1.GetLength( 0 ); i ++ )
{
v1 = (ValueType)array1.GetValue(i);
v2 = (ValueType)array2.GetValue(i);
if ( ! v1.Equals(v2))
{
return false ;
}
}
return true ;
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication7
{
class Program
{
static void Main( string [] args)
{
List < int [] > alSchedule = new List < int [] > (); // 声明一个存放int[]元素的 集合
alSchedule.Add( new int [] { 1 , 2 , 3 } );
alSchedule.Add( new int [] { 1 , 2 , 3 , 4 } );
int [] result = alSchedule.Find(FindElements);
if (result != null )
{
Console.WriteLine(result);
}
Console.Read();
}
private static bool FindElements( int [] arrInt)
{
return IsEquals(arrInt, new int [] { 1 , 2 , 3 } );
}
public static bool IsEquals(Array array1, Array array2)
{
// 比较类型是否一样
if ( ! Object.ReferenceEquals(array1.GetType(), array2.GetType()))
{
return false ;
}
// 比较长度是否一样
if (array1.GetLength( 0 ) != array2.GetLength( 0 ))
{
return false ;
}
// 比较成员是否对应相等
ValueType v1, v2;
for ( int i = 0 ; i < array1.GetLength( 0 ); i ++ )
{
v1 = (ValueType)array1.GetValue(i);
v2 = (ValueType)array2.GetValue(i);
if ( ! v1.Equals(v2))
{
return false ;
}
}
return true ;
}
}
}