シナリオ:
監査の一般的なリストとAuditImagesの一般的なリストがあります。これらの2つのリストは、データベーステーブルからコンパイルされています。この結果、1つのAuditImageに多数の監査を含めることができます。以下に示すように、テーブルがマップされるクラスは、データベース内にあるときに外部キー関係「ImageID」によって結合されますが、データがコード内のリストに抽出されると、「PHYSICALJOIN」はありません。
DBテーブルがマップするクラス:
public class AuditImage
{
public Guid ImageID { get; set; }
public string LowResUrl { get; set; }
}
public class Audit
{
public Guid AuditID { get; set; }
public Guid ImageID { get; set; }
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
public string Comment { get; set; }
}
問題:
次に、各リストからデータを抽出し、それを「Audit.ImageID == AuditImage.ImageID」で結合して、「Trail」オブジェクトのリストを新しいリストにコンパイルします。
public class Trail
{
public Guid ImageID { get; set; }
public DateTime CreatedDate { get; set; }
public string CreatedBy { get; set; }
public string Comment { get; set; }
public string LowResUrl { get; set; }
}
(上記は基本的に、「LowResUrl」フィールドと、同じImageIDに基づく各監査を組み合わせたものです。)
質問:
どうすればいいの!?foreachループとlinqを使用してトレイルオブジェクトの新しいリストを作成することを考えていましたが、これをどのように行うかを正確に考えることはできません。
助けていただければ幸いです。