我有以下课程(为简洁起见而简化):
public class Rule
{
public int Id { get; set; }
public string Name { get; set; }
public List<RuleTemplate> RuleTemplates { get; set; }
}
public class RuleTemplate
{
public int Id { get; set; }
public Rule Rule { get; set; }
public string Description { get; set; }
}
public class RuleInstance
{
public int Id { get; set; }
public string RuleValue { get; set; }
public RuleTemplate RuleTemplate { get; set; }
}
想象一下,我有以下与这些对象相关的数据:
规则
Id:1 /姓名:“在几天之间”
Id:2 /姓名:“匹配类别ID”
RuleTemplate
Id:1 /规则:(在规则ID 1之上指定)/描述:“从周日开始”
Id:2 /规则:(在规则ID 1之上分配)/描述:“到星期几”
Id:3 /规则:(在规则ID 2之上分配)/描述:“类别ID”
RuleInstance
Id:1 / RuleValue:“Monday”/ RuleTemplate :(在RuleTemplate Id 1上方指定)
Id:2 / RuleValue:“Friday”/ RuleTemplate :(在RuleTemplate Id 2上面指定)
Id:3 / RuleValue:300 / RuleTemplate :(在RuleTemplate Id 3之上分配)
所以在这里我基本上得到了两个不同的Rules
。
第一个Rule
已为其分配了2个RuleTemplates
(并且每个RuleTemplates
分配了1个RuleInstance
。
第二个Rule
只分配了一个RuleTemplate
,其中分配了RuleInstance
个。{/ p>
所以,如果我根据上述数据得到List<RuleInstance>
,我希望能够生成一个List<Rule>
,其中包含基础RuleTemplates
(并且每个分组RuleTemplates
以便附加关联的RuleInstances
。
所以在这种情况下,我会得到一个2 Rules
的列表,关联的对象看起来如下所示:
--Rule Id 1
----RuleTemplate Id 1
------RuleInstance Id 1
----RuleTemplate Id 2
------RuleInstance Id 2
--Rule Id 2
----RuleTemplate Id 3
------RuleInstance Id 3
答案 0 :(得分:1)
通过简单直线,您可以获得所需的结果:
LstRuleInstance.Select(ri => ri.RuleTemplate.Rule).Distinct();
这样可以从List<Rule>
获得List<RuleInstance>
。