[英]Comparing list counts with of two objects C#
我一直在遇到一個小問題,希望能有所幫助。
我有兩個模塊列表,如下所示。
我基本上想要實現的是跟蹤已完成的主題。
m1代表具有其技能和主題的完整的模塊集,而m2代表訪問且不完整的主題模塊,技能和主題。
List <ModuleA> m1;
List <ModuleB> m2;
public class ModuleA
{
public bool completed { get; set; }
public string ModuleCode { get; set; }
public List<Skill> lstKeySkills { get; set; }
}
public class ModuleB
{
public string ModuleCode { get; set; }
public List<Skill> lstKeySkills { get; set; }
}
public class Skill
{
public string KeySkillName { get; set; }
public List<Topic> LstTopics { get; set; }
}
public class Topic
{
public string TopicName { get; set; }
}
如何在兩個模塊的技能范圍內進行主題計數比較?
我已經嘗試過類似的方法,但是看起來很混亂而且不正確。
foreach (var mc in m1)
{
foreach (var v in m2)
{
if (v.ModuleCode == mc.ModuleCode)
{
foreach (var skillsIC in v.lstKeySkills)
{
foreach (var skillsC in mc.lstKeySkills)
{
if (skillsIC.LstTopics.Count() == skillsC.LstTopics.Count())
{
//Count is the same
}
}
}
}
}
}
您可以使用join
子句:
var result = from a in m1 // ModuleA iterable
join b in m2 // ModuleB iterable
on new { a.ModuleCode, a.Skills.Count }
equals new { b.ModuleCode, b.Skills.Count }
select new { a, b };
這是一個聯接,列表計數匹配。 在LINQ中更容易
var result = m1.Join(m2, a => a.ModuleCode, b => b.ModuleCode, (a,b) => new { A = a, B = b})
.Where (x => x.A.lstKeySkills.Count() == x.B.lstKeySkills.Count());
在此示例中, result
將是一個匿名項目的枚舉,該項目具有2個屬性
A
是ModuleA
B
是ModuleB
A
和B
將始終在ModuleCode
匹配,並且具有相同的技能數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.