#2つの配列のクラスが同じ場合
public class Student
{
public string Name;
public int Age;
}
public class Class
{
public Student[] Students;
}
public class Club
{
public Student[] Students;
}
クラスとクラブ両方に属している生徒の名前のリストを作りたい場合
foreachを使った場合は
var names = new List<string>();
foreach (var student in @class.Students)
{
foreach (var clubStudent in club.Students)
{
if (student == clubStudent)
{
names.Add(student.Name);
}
}
}
LINQなら
var names = @class.Students
.Intersect(club.Students)
.ToList();
#2つの配列が同じクラスではない場合
public class Student
{
public string Name;
public int Age;
}
public class Class
{
public Student[] Students;
}
public class Member
{
public int Id;
public string Name;
}
public class Club
{
public Member[] Members;
}
クラスとクラブ両方に属している同じ名前の人のメンバーIDリストを作りたい場合
foreachを使った場合は
var ids = new List<int>();
foreach (var student in @class.Students)
{
foreach (var member in club.Members)
{
if (student.Name == member.Name)
{
ids.Add(member.Id);
}
}
}
LINQなら
var ids = @class.Students
.Join(club.Members, student => student.Name, member => member.Name, (student, member) => member.Id)
.ToList();