Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中的另一个类列表中添加类列表#_C#_List_Collections - Fatal编程技术网

C# 在C中的另一个类列表中添加类列表#

C# 在C中的另一个类列表中添加类列表#,c#,list,collections,C#,List,Collections,我有甲级、乙级和丙级 A类为: public class A { public string ColA { get; set; } } B类为: public class B { public int ColB { get; set; } public List<A> a { get; set; } } 我无法在B类名单下列出A类名单 var objC = new C(); foreach(var data in ipData) {

我有甲级、乙级和丙级

A类为:

public class A
{
    public string ColA { get; set; }
}
B类为:

public class B
{
    public int ColB { get; set; }
    public List<A> a { get; set; }
}
我无法在B类名单下列出A类名单

   var objC = new C();
   foreach(var data in ipData)
   {
         objC.ColC = data.ColC;
         var objB = new B();
         var lstB = new List<B>();
         var lstA = new List<A>();
         var objA = new A();
         objA.ColA = data.ColA;
         lstA.Add(objA);
         objB = new B { ColB = data.ColB, a = lstA };
         lstB.Add(objB);
         objC.b = lstB; 

   }

您可以使用一些Linq方法(GroupBy和Select)完成此操作:

List cList2=ipData.GroupBy(x=>x.ColC)。选择(ColC=>newc
{
ColC=ColC.Key,
b=colC.GroupBy(colB=>colB.colB)
{
ColB=ColB.Key,
a=colB.Select(colA=>newa
{
可乐
})托利斯先生()
})托利斯先生()
}).ToList();

我想出了这个方法,它提供了我的输出

        public class Student
        {
            public string sid { get; set; }
        }
        public class Strength
        {
            public int Str { get; set; }
            public List<Student> stu { get; set; }
        }
        public class Profile
        {
            public int name { get; set; }
            public ICollection<Strength> strength { get; set; }
        }


        public class Program
        {
            public static void Main(string[] args)
            {

         var ipData = new[]
            {
                new { ColC = 1, ColB = 101, ColA = "val1" },
                new { ColC = 1, ColB = 101, ColA = "val2" },
                new { ColC = 1, ColB = 102, ColA = "val3" },
                new { ColC = 1, ColB = 102, ColA = "val4" }
            };
                var prof = new Profile();
                var stren = new List<Strength>();

                var dColB = ipData.Select(x => x.ColB).Distinct();
                foreach(var newval in dColB)
                {
                    Console.WriteLine(newval);
                    var colval = ipData.Where(x => x.ColB == newval);
                    var stud = new List<Student>();
                    foreach(var nval in colval)
                    {
                        var stuval = new Student { sid = nval.ColA };
                        stud.Add(stuval);                   
                    }
                    var strval = new Strength{ Str = newval, stu = stud };
                    stren.Add(strval);
                }

                var dColC = ipData.Select(x => x.ColC).Distinct();
                foreach(var data in dColC)
                {
                    prof.name = data;
                    prof.strength = stren;                
                }
                Console.WriteLine(prof.name);
                foreach(var ss in prof.strength)
                {
                    Console.WriteLine(ss.Str);
                    foreach(var nn in ss.stu)
                    {
                        Console.WriteLine(nn.sid);                          
                    }
                }                  
            }
        }
公共班级学生
{
公共字符串sid{get;set;}
}
公共阶级力量
{
公共int Str{get;set;}
公共列表stu{get;set;}
}
公共班级简介
{
公共int名称{get;set;}
公共ICollection强度{get;set;}
}
公共课程
{
公共静态void Main(字符串[]args)
{
var ipData=new[]
{
新的{ColC=1,ColB=101,ColA=“val1”},
新的{ColC=1,ColB=101,ColA=“val2”},
新的{ColC=1,ColB=102,ColA=“val3”},
新的{ColC=1,ColB=102,ColA=“val4”}
};
var prof=newprofile();
var stre=新列表();
var dColB=ipData.Select(x=>x.ColB.Distinct();
foreach(dColB中的变量newval)
{
控制台写入线(newval);
var colval=ipData.Where(x=>x.ColB==newval);
var stud=新列表();
foreach(colval中的var nval)
{
var stuval=新学生{sid=nval.ColA};
螺柱。添加(stuval);
}
var strval=新强度{Str=newval,stu=sth};
强度增加(标准偏差);
}
var dColC=ipData.Select(x=>x.ColC.Distinct();
foreach(dColC中的var数据)
{
prof.name=数据;
教授力量=力量;
}
Console.WriteLine(教授姓名);
foreach(var ss,教授强度)
{
控制台写入线(ss.Str);
foreach(ss.stu中的变量nn)
{
控制台写入线(nn.sid);
}
}                  
}
}

您是否可以实际显示您希望输出的外观?另外,您可能需要首先按公共值对数据进行分组。我想将我的类C作为模型传递给view以传递此数据。
   var objC = new C();
   foreach(var data in ipData)
   {
         objC.ColC = data.ColC;
         var objB = new B();
         var lstB = new List<B>();
         var lstA = new List<A>();
         var objA = new A();
         objA.ColA = data.ColA;
         lstA.Add(objA);
         objB = new B { ColB = data.ColB, a = lstA };
         lstB.Add(objB);
         objC.b = lstB; 

   }
 Class C
 C => 1 , B => 101 , A => val1, val2
          B => 102 , A => val3, val4
List<C> cList2 = ipData.GroupBy(x => x.ColC).Select(colC => new C
{
    ColC = colC.Key,
    b = colC.GroupBy(colB => colB.ColB).Select(colB => new B
    {
        ColB = colB.Key,
        a = colB.Select(colA => new A
        {
            ColA = colA.ColA
        }).ToList()
    }).ToList()
}).ToList();
        public class Student
        {
            public string sid { get; set; }
        }
        public class Strength
        {
            public int Str { get; set; }
            public List<Student> stu { get; set; }
        }
        public class Profile
        {
            public int name { get; set; }
            public ICollection<Strength> strength { get; set; }
        }


        public class Program
        {
            public static void Main(string[] args)
            {

         var ipData = new[]
            {
                new { ColC = 1, ColB = 101, ColA = "val1" },
                new { ColC = 1, ColB = 101, ColA = "val2" },
                new { ColC = 1, ColB = 102, ColA = "val3" },
                new { ColC = 1, ColB = 102, ColA = "val4" }
            };
                var prof = new Profile();
                var stren = new List<Strength>();

                var dColB = ipData.Select(x => x.ColB).Distinct();
                foreach(var newval in dColB)
                {
                    Console.WriteLine(newval);
                    var colval = ipData.Where(x => x.ColB == newval);
                    var stud = new List<Student>();
                    foreach(var nval in colval)
                    {
                        var stuval = new Student { sid = nval.ColA };
                        stud.Add(stuval);                   
                    }
                    var strval = new Strength{ Str = newval, stu = stud };
                    stren.Add(strval);
                }

                var dColC = ipData.Select(x => x.ColC).Distinct();
                foreach(var data in dColC)
                {
                    prof.name = data;
                    prof.strength = stren;                
                }
                Console.WriteLine(prof.name);
                foreach(var ss in prof.strength)
                {
                    Console.WriteLine(ss.Str);
                    foreach(var nn in ss.stu)
                    {
                        Console.WriteLine(nn.sid);                          
                    }
                }                  
            }
        }