我有以下代码:
public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{
filteredEmployees.EmployeeRecords = employee[0];
}
EmployeeRecords 的类型为IEnumerable<Employee>
我收到以下异常:
无法隐式转换类型&#39; Newtonsoft.Json.Linq.JObject&#39;到&#39; System.Collections.Generic.IEnumerable&#39;。一个明确的 存在转化(您是否错过了演员?)
我该如何解决这个问题?
答案 0 :(得分:5)
该消息表明employee[0]
作为JObject
返回,因此必须对其进行解析才能转换为其他类型的对象。我还没有看到足够的代码知道哪一个最适合您,并且您可能需要采取更多步骤,但类似于动态到强类型映射(使用JObject.ToObject()
)或强类型JSON解析(使用JsonConvert.DeserializeObject()
),如下页所述,应该让您走上正确的道路:
答案 1 :(得分:3)
您可以使用JavascriptSerializer将动态转换为员工:
public EmployeeDepartment InsertEmployeeAndDepartment(params dynamic[] employee)
{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
filteredEmployees.EmployeeRecords = serializer.Deserialize<List<EmployeeRecords >>(employee);
}
答案 2 :(得分:1)
嗯,你正试图让一个雇员担任可数。尝试:
filteredEmployees.EmployeeRecords = employee;
您是否有充分的理由在该方法上使用动态参数?
如果你想在你的枚举中只想一个元素,你可以尝试:
filteredEmployees.EmployeeRecords = new [] { employee[0] };
虽然我怀疑您在某些时候需要将JSON对象反序列化为Employee对象