C# 在C中的另一个类列表中添加类列表#
我有甲级、乙级和丙级 A类为: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) {
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);
}
}
}
}