C#取得List[]配列におけるある種類の集合データの取得

1315 ワード

シーン仮定:自分の状況に合わせて修正してください.
2つの集合があると仮定し、集合タイプはそれぞれ【PhysicalResult】と【PhysicalSummary】である.
IEnumerable results = Current.Where(resultfilter).OrderBy(a =>a.CompositeItem.Id).ToList();
IEnumerable summaries = Current.Where(a => a.Summary != null).OrderBy(a => a.Id).ToList();

List[]に追加
IList[] list = new IList[]{results.ToList(), summaries.ToList()};

タイプが「PhysicalResult」のデータセットを取り出すには
シナリオ1:
foreach (var item in list)
{
    Type type = item.GetType();
    if (type.IsGenericType)//     
    {
       Type[] genericTypes = type.GetGenericArguments();//    
       string ClassName = genericTypes[0].Name;
       if (ClassName == "IPhysicalResult")
       {
           results = item as List;
       }
       else if (ClassName == "IPhysicalSummary")
       {
           summaryLists = item as List;
       }
     }
 }

シナリオ2:
IList results = list.CastAs>().FirstOrDefault();
IList summaryLists = list.CastAs.().FirstOrDefault();