我有一个如下所示的对象:
public class School
{
public string schoolName { get;set;}
public List<ClassRoom> classAttribute{get;set;}
}
public class ClassRoom
{
public string Duster{get;set;}
public string BlackBoard {get;set;}
public List<Students> students {get;set;}
}
public class Students
{
public int StudentID {get;set;}
public string StudentName {get ;set;}
public string Weight {get;set;}
public string Height {get;set;}
}
我还有Type <key,CustomObject>
的 dict ,其中CustomObject
包含所有"Students"
类字段以及其他字段。
public class CustomObject
{
public string HairColor {get;set;}
public int StudentID {get;set;}
public string StudentName {get ;set;}
public string Weight {get;set;}
public string Height {get;set;}
public string Ethnicity {get;set;}
}
我的dict是以key
为StudentName
而Value
为CustomObject
的方式构建的
喜欢
dict<Key,CustomObject> dict
QuickWatch
Key : Student1
Value: [0] :
HairColor : Black
StudentID : 1
StudentName : Student1
Weight : 58
Height : 89
Ethnicity : Asian
[1] :
HairColor : Brown
StudentID : 2
StudentName : Student1
Weight : 24
Height : 22
Ethnicity : Arfican
我有一个学校对象,学生列表
List<Students> studentList = new List<Students>();
只有&#34; StudentName
&#34;在内部Students
对象中,其他字段为空。我必须在字典中找到这个StudentName
并构建&#34; Students
&#34;来自&#34; CustomObject
&#34;的对象然后将其附加到&#34; ClassRoom
&#34; 。最后,当我展开Student
时,我应该能够为School
对象填充所有字段(上面示例中的2个Student对象,一个使用HairColor作为黑色,另一个使用Haircolor作为棕色)对象在即时窗口中导航到&#34; School
&#34;,数据来自字典。
。在这个例子中,一个有2个PropertyObjects的学生只是假设。
我将如何继续获得结果。它是这样的:
studentList.Select(x => x.classAttribute)
.Select(y => y.students)
.Where(z=>z.StudentName == dict.key);
但问题是我必须在附加它之前从Student
构建CustomObject
对象。那么,我是怎么用linq做的呢?
答案 0 :(得分:3)
我相信这就是你要找的东西:
var result = school
.classAttribute
.SelectMany(c => c.students)
.Where(s => s.StudentName == "some dict key")
.Select(s => new CustomObject
{
StudentID = s.StudentID,
StudentName = s.StudentName,
Height = s.Height,
Weight = s.Weight
}).Single();
答案 1 :(得分:0)
这可能会有所帮助
mdl