次のような形のデータがあります
someArray = [{ Name: "Some Class", TypeEnum: "Default" },
{ Name: "Some Class", TypeEnum: "Other" },
{ Name: "Some Class 2", TypeEnum: "Default" },
{ Name: "Some Class 2", TypeEnum: "Other" },
{ Name: "Some Class 3", TypeEnum: "Default" },
{ Name: "Some Class 4", TypeEnum: "Not Other" }]
それらのそれぞれをC#のオブジェクトとして想像してください
必要なのは、選択したTypeEnumが優先される、その配列の個別のバージョンの配列です。たとえば、otherのTypeEnumを選択した場合でも、「Other」TypeEnumを含むそのクラスのバージョンが見つからない場合は、デフォルトでDefaultに設定します。
たとえば、タイプ列挙型として「その他」を選択すると、上記のデータは次のようになります。
[{ Name: "Some Class", TypeEnum: "Other" },
{ Name: "Some Class 2", TypeEnum: "Other" },
{ Name: "Some Class 3", TypeEnum: "Default" }]
私が今しているのは、ここからのラムダ比較です
TypeEnum myEnum = "Other"
someArray.Distinct((x,y) => x.Name == y.Name &&
x.TypeEnum != myEnum &&
(y.TypeEnum == myEnum || y.TypeEnum == "Default"));
Distinctが、その式からtrueを取得する配列から任意のxをポップアウトすることを期待しています。
Distinctが機能すると思う方法が間違っていますか?私がそうなら、代わりに何を使うべきですか?