所以我有一个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; }
}
现在,当我输入特定学生时,从我的客户端获取该组是没有问题的。但是当我输入一个不同的文本框来获取基于Group的学生时,什么都没有返回?例如,如果我输入组“A”,它应该返回属于该组的所有学生。就像我如何归还属于学生“B”
的群组一样答案 0 :(得分:3)
正如您对问题的评论中所提到的,您的代码有些令人困惑。毫无疑问,您会发现这会使代码中的逻辑错误变得更加困难。
如果您还没有这样做,请了解如何使用调试器。逐步完成返回组中学生的方法。使用“locals”窗口检查变量的值,或者用鼠标悬停在变量值上。您应该能够非常轻松地看到哪些变量具有意外值。然后,当然,下一步是确定为什么他们有意外的值。它可能是代码中的错误,也可能是数据库中的意外数据。
一旦你缩小了问题的位置,如果你仍然不理解为什么问题仍然存在,你应该更好地在stackoverflow上提出一个更有针对性的问题。
答案 1 :(得分:1)
我想我发现了这个问题,不知道为什么,但将学生加入小组和小组给学生似乎也有效。但是我可能会复制记录。
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 });
}
}