使用LINQ过滤UserDefinedFunctionCollection

本文关键字:UserDefinedFunctionCollection 过滤 LINQ 使用 | 更新日期: 2023-09-27 18:09:05

在下面的代码中,是否有一种方法可以过滤UserDefinedFunctionCollection的成员,这样我就不必在循环中执行if (!udf.IsSystemObject)检查了?

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
private void DebugSqlUserDefinedFunctions(SqlCommand cmd)
        {
            Server svr = new Server(new ServerConnection(cmd.Connection));
            foreach (Microsoft.SqlServer.Management.Smo.UserDefinedFunction udf in svr.Databases[cmd.Connection.Database].UserDefinedFunctions)
            {
                if (!udf.IsSystemObject)
                {
                    System.Diagnostics.Debug.WriteLine(udf.Name);
                }
            }
        }

使用LINQ过滤UserDefinedFunctionCollection

可以这样做:

private void DebugSqlUserDefinedFunctions(SqlCommand cmd)
{
    Server svr = new Server(new ServerConnection(cmd.Connection));
    foreach (var udf in svr.Databases[cmd.Connection.Database].UserDefinedFunctions.Cast<Microsoft.SqlServer.Management.Smo.UserDefinedFunction>().Where(udf => !udf.IsSystemObject))
    {
        System.Diagnostics.Debug.WriteLine(udf.Name);
    }
}

可能需要也可能不需要。cast <>()

相关文章:
  • 没有找到相关文章