林克问题不返校学生
本文关键字:返校 问题 林克 | 更新日期: 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 });
}
}