我有以下形状的数据
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。例如,如果我选择了其他的 TypeEnum,如果找不到具有“其他”TypeEnum 的类的版本,我仍然希望它默认为默认值
例如选择“其他”作为类型枚举,上面的数据看起来像
[{ Name: "Some Class", TypeEnum: "Other" },
{ Name: "Some Class 2", TypeEnum: "Other" },
{ Name: "Some Class 3", TypeEnum: "Default" }]
我现在正在做的是从这里开始的 lambda 比较
TypeEnum myEnum = "Other"
someArray.Distinct((x,y) => x.Name == y.Name &&
x.TypeEnum != myEnum &&
(y.TypeEnum == myEnum || y.TypeEnum == "Default"));
我希望 Distinct 从数组中弹出任何从该表达式中得到为真的 x 。
我认为 Distinct 的工作方式是错误的。如果我是,我应该用什么代替?