オブジェクトの配列を返す関数があります。問題は、オブジェクトが 3 つの異なるタイプのいずれかになる可能性があることです。これらのオブジェクトをさまざまなカスタム タイプの配列に分割しようとしています。
例えば:
var collection = something.ReturnObjArray();
var Details = collection.Where(a => a is DetailItem);
var Addenda = collection.Where(a => a is AddendaItem);
上記を実行し、foreach ループでデータにアクセスして、Addenda を詳細項目内のコレクションに配置しようとすると、次のようになります。
foreach (var addendaItem in Addenda)
{
var detailItem = Details.Single(d => d.DetailAddendaKey == addendaItem.Key);
detailItem.Addenda.Add(addendaItem);
}
次のようなエラーが表示されます。
「オブジェクト」には「DetailAddendaKey」の定義が含まれておらず、タイプ「オブジェクト」の最初の引数を受け入れる拡張メソッド「DetailAddendaKey」が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
とりわけ。Details と Addenda の変数を次のように変更しようとすると、
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>'
。明示的な変換が存在します (キャストがありませんか?)
私がしなければならないことはありますか?