2 つの異なるタイプの 2 つのコレクションがありますが、フィールドのセットはほぼ同じです。1 つの関数で、1 つの条件に応じてコレクションの 1 つを反復処理する必要があります。両方のケースをカバーするコード ブロックを 1 つだけ書きたいと思います。例: 次のコードがあります。
if (condition1)
{
foreach(var type1var in Type1Collection)
{
// Do some code here
type1var.Notes = "note";
type1var.Price = 1;
}
}
else
{
foreach(var type2var in Type2Collection)
{
// the same code logic is used here
type2var.Notes = "note";
type2var.Price = 1;
}
}
今:このコードを単純化して、同じロジックを1回だけ使用するようにします(それらは同一であるため)、次のようなものです(PS:次のコードが正しくないことはわかっています。やりたいことを説明しているだけです):
var typecollection = Condition1 ? Type1Collection : Type2Collection;
foreach(var typevar in TypeCollection)
{
// the same code logic is used here
typevar.Notes = "note";
typevar.Price = 1;
}
Type1 と Type2 の定義は次のコードのようになります (実際には Entity オブジェクトです)。
public class Type1 : EntityObject
{
public int Type1ID { get; set; }
public int Type1MasterID { get; set; }
public String Notes { get; set; }
public decimal Price { get; set; }
}
public class Type2 : EntityObject
{
public int Type2ID { get; set; }
public int Type2MasterID { get; set; }
public String Notes { get; set; }
public decimal Price { get; set; }
}
更新 1:
foreach ブロック内で使用しているサンプル コードをいくつか含めました (2 つの型のパブリック プロパティにアクセスしています)。
更新 2:
サンプルの Type1 と Type2 の定義を含めました。両方のクラスに、foreach ブロックで更新したい 2 つの共通のパブリック プロパティがあることがわかります。
更新 3:
混乱して申し訳ありませんが、Type1 と Type2 は EntityObject から派生しています (どちらも私のエンティティ モデルの一部であり、Type1Collection と Type2Collection は実際にはこれら 2 つのエンティティの EntityCollection です。