将自定义类对象转换为Object []

时间:2013-12-20 15:23:59

标签: c# linq collections type-conversion enterprise-library

这是我的自定义类的一个示例。

public class Application
{
    public string App_Name { get; set; }
    public string App_Number { get; set; }
    public string Sever_Name { get; set; }

}

我正在使用Enterprise Library Data Block中的ExecuteNonquery来调用我的存储过程。

我正在寻找一种方法,可能使用linq,将Application类型的对象转换为Object [],可以将其传递给ExecuteNoneQuery,如下所示。

Database.ExecuteNonQuery Method (String, Object[])

这是我希望能够做到的一个例子,但是在此之前需要进行应用程序的转换。

internal void Update(Application application)
{
    int returnValue = 0;
    string sql = "somsesproc";
    DatabaseFactory.CreateDatabase("AppsConnectionString").ExecuteNonQuery(somsesproc,    application);
}

3 个答案:

答案 0 :(得分:4)

目前还不清楚您是否希望对象数组中的Application对象本身:

object[] oa = new object[] {application};

或者如果您希望属性拆分为数组:

object[] oa = new object[] {application.App_Name, 
                            application.App_Number, 
                            application.Sever_Name};

答案 1 :(得分:2)

您可以使用反射将所有属性值去除到任意对象的数组中:

public static object[] StripPropertyValues<T>(T obj)
{
    return typeof(T).GetProperties(BindingFlags.Public |
        BindingFlags.Instance)
            .Select(prop => prop.GetValue(obj))
            .ToArray();
}

因此允许你写:

DatabaseFactory.CreateDatabase("AppsConnectionString")
    .ExecuteNonQuery(somsesproc, StripPropertyValues(application));

答案 2 :(得分:1)

.ExecuteNonQuery(somsesproc, new Object[] {application});