我正在开发Windows Phone平台的应用程序。遇到问题。
我有2个不同的List,1个是从xml文件直接读取的,另一个是通过一些计算。我想将这两个列表合并为1,所以我可以将它显示出来。
清单1:
public class studentClass1
{
public string studentID { get; set; }
public string studentFirstName { get; set; }
public string studentLastName { get; set; }
}
清单2:
public class studentClass2
{
public string studentID { get; set; }
public string studentGradePoint { get; set; }
}
首先,我通过
读出了studentClass1var studentList= from query in studentIndex.Descendants("student")
select new driversClass
StudentList1 = studentList.ToList();
其次,我在功能上处理学生成绩点计算并输出到第二个列表:
studentClass2 SG = new studentClass2
{
studentID = thestudentID ,
studentGradePoint = thestudentGradePoint .ToString()
};
StudentList2.Add(SG);
studentListAll = StudentList1 + StudentList2
现在,我想将这两个列表连接在一起,以便我可以通过调用
输出到屏幕studentResultListBox.Itemsource = StudentListAll;
任何建议代码会是什么样子? 感谢。
答案 0 :(得分:3)
假设您只想组合两个列表中的相应信息(从您的问题中并不完全清楚) - 引入第三个类studentClass3
,它包含您想要的所有属性,并使用连接来匹配实例匹配studentID
:
var studentList3 = (from s1 in studentList1
join s2 in studentList2 on s1.studentID equals s2.studentID
select new studentClass3()
{
studentFirstName = s1.studentFirstName,
studentID = s1.studentID,
studentGradePoint = s2.studentGradePoint,
studentLastName = s1.studentLastName
}).ToList();
一般来说,当您在XML中阅读而不是稍后尝试组合列表时,应该相当解决这个问题 - 为学生提供三个不同的课程可能会让人感到困惑。另请参阅推荐的命名约定,它们稍微偏离。
答案 1 :(得分:0)
使用界面,例如
interface IStudent
{
string studentID { get; }
// other common properties below
}
public class StudentClass1 : IStudent
{
public string studentID { get; set; }
public string studentFirstName { get; set; }
public string studentLastName { get; set; }
}
public class StudentClass2 : IStudent
{
public string studentID { get; set; }
public string studentGradePoint { get; set; }
}
然后
studentResultListBox.Itemsource = list1.Cast<IStudent>()
.Concat(list2.Cast<IStudent>())
.ToList();
或者,如果继承不是这种情况,只需将所有内容强制转换为System.Object(+覆盖object.ToString)
studentResultListBox.Itemsource = list1.Cast<object>()
.Concat(list2.Cast<object>())
.ToList();