C# 无法隐式转换类型';Newtonsoft.Json.Linq.JObject';至';System.Collections.Generic.IEnumerable<;员工>';

C# 无法隐式转换类型';Newtonsoft.Json.Linq.JObject';至';System.Collections.Generic.IEnumerable<;员工>';,c#,json.net,C#,Json.net,我有以下代码: public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee) { filteredEmployees.EmployeeRecords = employee[0]; } 其中员工记录的类型为IEnumerable 我得到以下例外情况: 无法将类型“Newtonsoft.Json.Linq.JObject”隐式转换为“Sy

我有以下代码:

public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{                
    filteredEmployees.EmployeeRecords = employee[0];           
}
其中员工记录的类型为
IEnumerable

我得到以下例外情况:

无法将类型“Newtonsoft.Json.Linq.JObject”隐式转换为“System.Collections.Generic.IEnumerable”。明确的 存在转换(您是否缺少演员阵容?)


我该如何解决这个问题?

嗯,您正试图将单个员工分配到一个可枚举项。尝试:

filteredEmployees.EmployeeRecords = employee; 
你为什么要在这个方法上使用动态参数,有什么好的理由吗

如果只需要枚举表中的一个元素,可以尝试:

filteredEmployees.EmployeeRecords = new [] { employee[0] }; 
尽管我怀疑您在某个时候需要将JSON对象反序列化为Employee对象,但您可以使用它将动态对象转换为Employee:

public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{         
    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();       
    filteredEmployees.EmployeeRecords = serializer.Deserialize<List<EmployeeRecords >>(employee);           
}
public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[]employee)
{         
var serializer=new System.Web.Script.Serialization.JavaScriptSerializer();
filteredEmployees.EmployeeRecords=serializer.Deserialize(员工);
}

该消息表明
employee[0]
将作为
JObject
返回,因此必须对其进行解析才能转换为另一种类型的对象。我对您的代码了解得不够,不知道哪一个最适合您,您可能需要采取更多的步骤,但需要使用动态到强类型映射(使用
JObject.ToObject()
)或强类型JSON解析(使用
JsonConvert.DeserializeObject()
)如下页所述,您应该走上正确的道路:


为什么员工充满活力[]?这会导致各种各样的问题,比如说有人将jObject而不是IList“employee”传入数组..我最终必须执行filteredEmployees.EmployeeRecords=employee[0]和filteredEmployees.DeptreRecords=employee[1];我相信这是正确的答案。在我的例子中,我想将JObject转换为动态对象,然后将动态对象转换为IDictionary,这样我就可以使用像obj[“[字段名]”]这样的名称。我必须使用JObject.ToObject()。谢谢你的建议。