我有一个返回对象数组的函数。问题是,对象可以是三种不同类型之一。我试图将这些对象分解为不同自定义类型的数组。
例如:
var collection = something.ReturnObjArray();
var Details = collection.Where(a => a is DetailItem);
var Addenda = collection.Where(a => a is AddendaItem);
如果我执行上述操作并尝试在 foreach 循环中访问数据以将附录放入详细信息项中的集合中:
foreach (var addendaItem in Addenda)
{
var detailItem = Details.Single(d => d.DetailAddendaKey == addendaItem.Key);
detailItem.Addenda.Add(addendaItem);
}
我收到如下错误:
“object”不包含“DetailAddendaKey”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“DetailAddendaKey”(您是否缺少 using 指令或程序集引用?)
其中。如果我尝试将详细信息和附录的 var 更改为:
IEnumerable<DetailItem> Details = collection.Where(a => a is DetailItem);
IEnumerable<AddendaItem> Addenda = collection.Where(a => a is AddendaItem);
我克服了上面的错误,但现在得到:
无法将类型隐式转换'System.Collections.Generic.IEnumerable<object>'
为'System.Collections.Generic.IEnumerable<MyNameSpace.DetailItem>'
. 存在显式转换(您是否缺少演员表?)
有什么想法我需要做什么吗?