返回LINQ大全首页
OfType()OfType()
可以用于筛选指定类型(及其子类)。 MSDN
下面代码示例中使用的类结构如下图所示。 代码示例:
public static class Program
{
private class BaseClass
{
public virtual string Type { get { return "-"; } }
public string Name { get; set; }
public override string ToString()
{
return string.Format( "Type:{0}, Name:{1}", Type, Name );
}
}
private class ClassA : BaseClass
{
public override string Type { get { return "A"; } }
}
private class ClassB : BaseClass
{
public override string Type { get { return "B"; } }
}
private class ClassC : ClassB
{
public override string Type { get { return "C"; } }
}
static void Main( string[] args )
{
BaseClass[] parameters = new BaseClass[]
{
new ClassA() { Name = "正一郎" },
new ClassB() { Name = "清次郎" },
new ClassB() { Name = "誠三郎" },
new ClassC() { Name = "征史郎" },
};
// 转换
IEnumerable reaultBase = parameters.OfType();
IEnumerable reaultA = parameters.OfType();
IEnumerable reaultB = parameters.OfType();
IEnumerable reaultC = parameters.OfType();
// 输出
System.Console.WriteLine( "parameters:{0}", parameters.Text() );
System.Console.WriteLine( "BaseClass:{0}", reaultBase.Text() );
System.Console.WriteLine( "ClassA:{0}", reaultA.Text() );
System.Console.WriteLine( "ClassB:{0}", reaultB.Text() );
System.Console.WriteLine( "ClassC:{0}", reaultC.Text() );
System.Console.ReadKey();
}
public static string Text( this IEnumerable i_source )
{
string text = string.Empty;
foreach( var value in i_source )
{
text += string.Format( "[{0}], ", value );
}
return text;
}
}
parameters:[Type:A, Name:正一郎], [Type:B, Name:清次郎], [Type:B, Name:誠三郎],
[Type:C, Name:征史郎],
BaseClass:[Type:A, Name:正一郎], [Type:B, Name:清次郎], [Type:B,
Name:誠三郎], [Type:C, Name:征史郎],
ClassA:[Type:A, Name:正一郎],
ClassB:[Type:B, Name:清次郎], [Type:B, Name:誠三郎], [Type:C,
Name:征史郎],
ClassC:[Type:C, Name:征史郎],
下面使用ArrayList
进行试验。
代码示例:
public static class Program
{
static void Main( string[] args )
{
ArrayList list = new ArrayList() { 1, 3, "2", 5.5f };
// 转换
IEnumerable reaultInt = list.OfType();
IEnumerable reaultString = list.OfType();
IEnumerable reaultFloat = list.OfType();
IEnumerable reaultLong = list.OfType();
System.Console.WriteLine( "list:{0}", list.Text() );
System.Console.WriteLine( "int:{0}", reaultInt.Text() );
System.Console.WriteLine( "string:{0}", reaultString.Text() );
System.Console.WriteLine( "float:{0}", reaultFloat.Text() );
System.Console.WriteLine( "long:{0}", reaultLong.Text() );
System.Console.ReadKey();
}
public static string Text( this IEnumerable i_source )
{
string text = string.Empty;
foreach( var value in i_source )
{
text += string.Format( "[{0}], ", value );
}
return text;
}
}
list:[1], [3], [2], [5.5],
int:[1], [3],
string:[2],
float:[5.5],
long: