所以我有一个窗体窗体应用程序(客户端),它显示哪些组属于学生。Linq问题没有返回学生
在服务方面,这是像这样做:
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”
你的代码有很多问题。首先:使用'.Any()'而不是'.Count()> 0'。这是一个性能提示,但它不应该影响代码的正确性。其次,你的'AddStudentToGroup'方法实际上将THREE学生添加到该组中:一个ID是给定ID,并且其第一个和最后一个名字都是空的;其ID和姓氏为空,并且其名字是给定的名字的人;以及其ID和名字为空并且其姓氏是给定的姓氏的人。 – phoog 2012-04-11 17:46:50
我只是希望,如果我添加学生到一个组,我不需要以相反的方式做** **以及**? – 2012-04-11 17:47:33
'Groupsz'是一个错误,还是与'Groups'分开的一个集合? – phoog 2012-04-11 17:47:39