将参数传递给linq表达式?

时间:2013-05-23 11:51:31

标签: c#

我有以下代码将c#enum转换为javascript对象,但这些类型对代码是不可见的,并导致编译时错误。星星内部的类型是问题所在,我想我需要将类型传递给linq表达式,但我是股票,有没有人知道如何做到这一点?

public static string EnumToJsObj(Enum enumType)
{
    Type type = enumType.GetType();
    string strJS = string.Format("{{{0}}} ",
        string.Join(", ", Enum.GetNames(type).ToList().ConvertAll(key =>
        {
            return string.Format("{0} : {1}", key, (int)((***type***)Enum.Parse(typeof(***type***), key)));
        }).ToArray()));
}

2 个答案:

答案 0 :(得分:3)

这样的东西?

public static string EnumToJsObj(Enum enumType)
{
    Type t = enumType.GetType();
    return new JavaScriptSerializer().Serialize(
            Enum.GetNames(t).ToDictionary(e => e, e => (int)Enum.Parse(t,e))
    );
}

答案 1 :(得分:0)

您可以将方法设为通用方法:

public static string EnumToJsObj<T>(Enum enumType){ ... }

或者您可以使用System.Convert.ChangeType代替类型转换。