所以我有一個窗體窗體應用程序(客戶端),它顯示哪些組屬於學生。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