林克问题不返校学生

本文关键字:返校 问题 林克 | 更新日期: 2023-09-27 18:30:50

所以我有一个Windows表单应用程序(客户端),它显示哪些组属于学生。

在服务端,这是这样完成的:

    List<Student> students = new List<Student>();
    List<Group> Groups = new List<Group>();
    public List<Group> GetStudentCollectionByGroup(string anything)
    {
        List<Group> groups = (from g in Groups
                              where
                                  (from t in g.Groupsz where
                                          string.Equals(t.StudentID, anything, StringComparison.CurrentCultureIgnoreCase)
                                       || string.Equals(t.FirstName, anything, StringComparison.CurrentCultureIgnoreCase)
                                       || string.Equals(t.LastName, anything, StringComparison.CurrentCultureIgnoreCase)
                                   select t).Count() > 0
                              select g).ToList();
        return groups;
    }

为了将学生添加到小组中,我使用了此方法:

    public void AddStudentToGroup(string group, string studentID, string firstName, string lastName)
    {
        var result = Groups.Where(n => String.Equals(n.GroupName, group)).FirstOrDefault();
        if (result != null)
        {
            result.Groupsz.Add(new Student() { StudentID = studentID });
            result.Groupsz.Add(new Student() { FirstName = firstName });
            result.Groupsz.Add(new Student() { LastName = lastName });
        }
    }  

我的GET方法看起来像这样:

    [OperationContract]
    [WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, UriTemplate = "/GetStudentCollectionByGroup/{anything}")]
    List<Group> GetStudentCollectionByGroup(string anything);

数据协定如下所示:

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; }
    public List<Group> StudentGroup { get; set; }
}
[DataContract(Name = "Group")]
public class Group
{
    public Group() 
    {
        Groupsz = new List<Student>();
    }
    public string GroupName { get; set; }
    public List<Student> Groupsz { get; set; }
}

现在,当我输入特定学生时,我可以毫无问题地从客户端获取该组。但是,当我在不同的文本框中键入以根据组获取学生时,没有任何返回?例如,如果我键入组"A",它应该返回属于该的所有学生。就像我返回属于学生"B"的组集合一样

林克问题不返校学生

正如您的问题的评论中所述,您的代码有些混乱。 正如您无疑发现的那样,这可能会使在代码中查找逻辑错误变得更加困难。

如果尚未执行此操作,请了解如何使用调试器。 逐步完成返回组中学生的方法。 使用"局部变量"窗口检查变量的值,或者将鼠标悬停在变量上。 您应该能够相当容易地看到哪些变量具有意外值。 然后,当然,下一步是确定为什么它们具有意外值。 这可能是代码中的错误,也可能是数据库中的意外数据。

一旦你缩小了问题的位置,如果你仍然不明白为什么问题仍然存在,你应该能够更好地在stackoverflow上提出一个更集中的问题。

我想

我发现了问题,不知道为什么,但是将学生添加到小组中,将小组添加到学生中似乎有效。但是,我可能会复制记录。

  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.Groupsz.Add(new Student() { StudentID = studentID, FirstName = firstName, LastName = lastName });
        }
        if (result1 != null)
        {
            result1.StudentGroup.Add(new Group() { GroupName = group });
        }
    }