我有以下3个班级:
public class RuleSet
{
public int Id { get; set; }
public int SiteId { get; set; }
public List<RuleInstance> RuleInstances { get; set; }
public RuleSetType RuleSetType { get; set; } // RuleSetType is an ENUM
}
public class RuleInstance
{
public int Id { get; set; }
public int RuleSetId { get; set; }
[ForeignKey("RuleSetId")]
public RuleSet RuleSet { get; set; }
public int RuleId { get; set; }
[ForeignKey("RuleId")]
public Rule Rule { get; set; }
public string RuleValue { get; set; }
public Guid RuleGroupId { get; set; }
}
public class Rule
{
public int Id { get; set; }
public string Name { get; set; }
public ModuleType ModuleType { get; set; } // ModuleType is an ENUM
}
我的查询会返回特定RuleSets
和RuleInstances
的所有Rules
(包含相关SiteId
&amp; RuleSetType
)的列表。< / p>
我的第一个RuleSets
列表适用于RuleSetType
'Foo',我的第二个RuleSets
列表适用于RuleSetType
'栏'(适用于相同的SiteId)。< / p>
我想要做的是能够比较这两个列表,并识别两个列表中出现的任何RuleSets
,但比较需要仅基于每个RuleSets对象中的某些属性。< / p>
我希望能够在比较中使用的关键标准是:
必须匹配
忽略(因为它们不会相同)
最终,我想最终得到一些包含每对匹配规则集的集合(尽管基于上面突出显示的'必须匹配'属性'匹配'),所以我可以看看每个配对反过来,基于其他一些业务逻辑,我可以决定我真正想要使用哪两个规则集。