在我的 Global.asax 文件中,我创建了一个包含匿名类型对象的数组列表
Application["userRecordsCountList"] = new ArrayList();
((System.Collections.ArrayList)Application["userRecordsCountList"]).Add(new { userCount = 12, logTime = DateTime.Now });
现在在我的 cs 文件中我有一个像这样的转换函数
T Cast<T>(object obj, T type)
{
return (T)obj;
}
现在,当我运行循环以迭代数据并提取数据集中的数据时,出现错误 看代码
ArrayList countRecord = new ArrayList((System.Collections.ArrayList)Application["userRecordsCountList"]);
foreach (var item in countRecord)
{
dr = dt.NewRow();
var record = Cast(item, new { userCount = "", logTime = "" });
dr["Time"] = record.logTime;
dr["Users"] = record.userCount;
dt.Rows.Add(dr);
}
错误是
Unable to cast object of type '<>f__AnonymousType0`2[System.Int32,System.DateTime]' to type '<>f__AnonymousType0`2[System.String,System.String]'.
请帮帮我..我已经尝试了我在 stackoverflow 或任何其他来源上找到的所有方法.....
谢谢
最佳答案
不要使用匿名类型 - 使用您需要的实际类型。匿名类型只能在方法中使用 - 它们不能作为参数或返回类型传入,并且通常不适合序列化。
另外,你不应该使用 ArrayList
- 它不是类型安全的。使用像 List<T>
这样的通用集合相反。
关于c# - 类型转换匿名类型抛出类型转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646224/