您的位置:首页 > 其它

几个常用的LINQ查询

2009-01-22 22:56 309 查看
用来备份,以后更新并查阅。:)

#region GetFiles

/// <summary>

/// 获得指定路径下的所有文件

/// </summary>

/// <param name="path">有效路经</param>

/// <returns></returns>

public IEnumerable<FileInfo> GetFiles(string path)

{

DirectoryInfo directory = new DirectoryInfo(path);

if (directory == null)

return null;

return

from f in directory.GetFiles()

select f;

}

/// <summary>

/// 测试GetFiles

/// </summary>

[TestMethod]

public void TestGetFiles()

{

string path = Environment.SystemDirectory;

var result = GetFiles(path);

Assert.IsNotNull(result);

foreach (var item in result)

{

Assert.IsInstanceOfType(item, typeof(FileInfo));

Assert.IsTrue(File.Exists(item.FullName));

}

}

#endregion

#region GetReturnSpecifiedInterfacedMethods

/// <summary>

/// 获得指定Assembly中返回指定接口类型名称的方法信息

/// </summary>

/// <param name="assembly">Assembly</param>

/// <param name="interfaceType">接口类型名称</param>

/// <returns></returns>

public IEnumerable<MethodInfo> GetReturnSpecifiedInterfacedMethods(Assembly assembly, string interfaceTypeName)

{

if (assembly == null) throw new ArgumentNullException("assembly");

if(string.IsNullOrEmpty(interfaceTypeName)) throw new ArgumentNullException("interfaceTypeName");

return

from type in assembly.GetTypes()

from method in type.GetMethods()

where

method.ReturnType.GetInterface(interfaceTypeName) != null

select method;

}

/// <summary>

/// 测试GetReturnSpecifiedInterfacedMethods

/// </summary>

[TestMethod]

public void TestGetReturnSpecifiedInterfacedMethods()

{

string typeName = "IEnumerable`1";

Assembly assembly = AppDomain.CurrentDomain.GetAssemblies()[0];

var result = GetReturnSpecifiedInterfacedMethods(assembly, typeName);

Assert.IsNotNull(result);

foreach (var item in result)

{

Assert.IsInstanceOfType(item, typeof(MethodInfo));

Assert.IsNotNull(item.ReturnType.GetInterface(typeName));

}

}

#endregion

#region GetAssemblyStaticMethods

/// <summary>

/// 获得指定Assembly包含的静态方法信息

/// </summary>

/// <param name="assembly"></param>

/// <returns></returns>

public IEnumerable<MethodInfo> GetAssemblyStaticMethods(Assembly assembly)

{

if (assembly == null) throw new ArgumentNullException("assembly");

return

from type in assembly.GetTypes()

from method in type.GetMethods()

where

method.IsStatic

select method;

}

/// <summary>

/// 测试GetAssemblyStaticMethods

/// </summary>

[TestMethod]

public void TestGetAssemblyStaticMethods()

{

Assembly assembly = AppDomain.CurrentDomain.GetAssemblies()[0];

var result = GetAssemblyStaticMethods(assembly);

Assert.IsNotNull(result);

foreach (var item in result)

{

Assert.IsInstanceOfType(item, typeof(MethodInfo));

Assert.IsTrue(item.IsStatic);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: