Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将参数传递到linq表达式中?_C# - Fatal编程技术网

C# 将参数传递到linq表达式中?

C# 将参数传递到linq表达式中?,c#,C#,我有以下代码将c#enum转换为javascript对象,但是类型对代码不可见,并导致编译时错误。星星内部的类型是问题所在,我想我需要将类型传递到linq表达式中,但是我有股票,有人知道怎么做吗 public static string EnumToJsObj(Enum enumType) { Type type = enumType.GetType(); string strJS = string.Format("{{{0}}} ", string.Join("

我有以下代码将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()));
}

您可以将方法设置为泛型方法:

public static string EnumToJsObj<T>(Enum enumType){ ... }
公共静态字符串EnumToJsObj(Enum enumType){…}
或者,您可以使用
System.Convert.ChangeType
而不是类型转换来逃脱惩罚。

类似的东西

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))
    );
}

***type***
中需要什么类型?type type=enumType.GetType();我尝试了genereic方法,它说“不能将T类型的表达式强制转换为int”@666-转换枚举而不是强制转换它(参见我的答案)。正如您在中所看到的,System.Enum实现了
IConvertible
接口。