我有以下类(简化为清楚起见):创建使用LINQ分组名单根据有关对象
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/Name:“Between Days of Week”
Id:2/Name:“Match Category Id”
RuleTemplate
ID:1 /规则: “从星期几”
。ID:2 /规则:/描述(上文规则标识1分配)(上述规则标识1分配) /说明: “星期几的影响”
ID:3 /规则:/描述(上文规则标识2分配): “类别ID”
RuleInstance
ID:1/RuleValue: “星期一”/ RuleTemplate:
ID(以上RuleTemplate标识1分配):2/RuleValue: “星期五”/ RuleTemplate:(以上RuleTemplate编号分配2)
标识:3/RuleValue:300/RuleTemplate :(分配在RuleTemplate Id 3以上)
所以在这里我基本上有两个不同的Rules
。
第一个Rule
有2 RuleTemplates
分配给它(并且这些RuleTemplates
中的每一个都被分配了1 RuleInstance
)。
第二个Rule
只有1 RuleTemplate
分配给它,其中有1 RuleInstance
分配给它。
所以,如果我有一个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
为什么不只是做'LstRuleInstance.Select(ri => ri.RuleTemplate.Rule).Distinct()'用那么简单的线条就可以得到想要的'List'是不是? –
frikinside
我的主要监督。卫生署!谢谢。如果你把这个作为答案,我会接受它,谢谢! – marcusstarnes
有时我们不缺乏知识,我们只需要另一对或眼睛;) – frikinside