タイプの異なる2つの列挙型を比較していますが、それらの間に違いがあるかどうかを確認しています。これを行うには、両方を互換性のある匿名型の列挙可能なリストにキャストします。
var curCombo = (from c in curPlan.TPM_TRAININGPLANSOLUTIONS orderby c.TASKID select new { Id = c.TASKID, Marker = c.ISMARKERCOMPLETION });
var newCombo = (from c in plan.Combo orderby c.TaskId select new { Id = c.TaskId, Marker = c.Marker });
次に、シーケンスが同じかどうかを確認します。
bool equals = curCombo.SequenceEqual(newCombo);
これはうまくいきplan.Combo
ますが、null の場合は例外が発生します。残念ながら、この配列が null にならないようにすることはできません。空のnewCombo
配列に設定し、2つを と比較する方法は実際にはないようです。全体を配置することは、その状態をトラップするブロックであり、かなり面倒です。1 つの雄弁な LINQ ステートメントが必要です。SequenceEqual
if
私が考えていたことの1つは、次のようなものです。
var newCombo = (from c in plan.Combo ?? new TrainingPlanCombo[0] orderby c.TaskId select new { Id = c.TaskId, Marker = c.Marker });
ただし、これは少しハッキーなようです。アイデア?