使用C#中的列表替换列表中的对象

时间:2017-03-03 10:58:30

标签: c# .net linq dictionary

我有一个如下所示的对象:

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是以keyStudentNameValueCustomObject的方式构建的 喜欢

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做的呢?

2 个答案:

答案 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