私はこれのためのLINQ削除メソッドを探しています:
<ArrayOfGroup>
<Group>
<GroupName>c</GroupName>
<StudentList>
<Student>
<TimeAdded>0001-01-01T00:00:00</TimeAdded> // trying to delete from here
<StudentID>1</StudentID>
<FirstName>a</FirstName>
<LastName>b</LastName> // to here
<StudentGroup/>
</Student>
</StudentList>
</Group>
</ArrayOfGroup>
何らかの理由で、この方法で削除すると:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class Service : IService
{
List<Student> students = new List<Student>();
List<Group> Groups = new List<Group>();
public void removeStudent(string studentID)
{
students.Remove(students.Find(f => f.StudentID.Equals(studentID)));
//var result = students.Where(n => String.Equals(n.StudentID, studentID)).FirstOrDefault();
//if (result == null)
//{
// result.StudentGroup.Remove(StudentList.Student.Find(f => f.StudentID.Equals(studentID)));
//}
// students.RemoveAll(f => f.StudentID.Equals(studentID)); also tryed this
}
私のArrayOfGroupの学生リスト/学生エリアからそれを削除しないので、削除されない理由を解決しようとしてうんざりしていて、元のレコードと一緒にそれを削除する新しい方法を見つけようとしています. 私はこれを行うことで犯罪者のように感じますが、誰かが助けてくれれば大歓迎です.
私のデータ コントラクトは次のようになります。
[DataContract(Name="Student")]
public class Student
{
public Student()
{
StudentGroup = new List<Group>();
}
[DataMember(Name = "StudentID")]
public string StudentID { get; set; }
[DataMember(Name = "FirstName")]
public string FirstName { get; set; }
[DataMember(Name = "LastName")]
public string LastName { get; set; }
[DataMember(Name = "TimeAdded")]
public DateTime TimeAdded;
public string TimeAddedString
{
get
{
return this.TimeAdded.ToString("dd/MM/yyyy hh:mm:ss");
}
}
public List<Group> StudentGroup { get; set; }
}
[DataContract(Name = "Group")]
public class Group
{
public Group()
{
StudentList = new List<Student>();
}
[DataMember(Name = "GroupName")]
public string GroupName { get; set; }
public List<Student> StudentList { get; set; }
}
これは、学生がグループに追加される方法です。
public void AddStudentToGroup(string group, string studentID, string firstName, string lastName)
{
var result = Groups.Where(n => String.Equals(n.GroupName, group)).FirstOrDefault();
var result1 = students.Where(n => String.Equals(n.StudentID, studentID)).FirstOrDefault();
if (result != null)
{
result.StudentList.Add(new Student() { StudentID = studentID, FirstName = firstName, LastName = lastName });
}
if (result1 != null)
{
result1.StudentGroup.Add(new Group() { GroupName = group });
}
}