c#循环迭代匿名类链表(可迭代的匿名类)

Main()
{
//为什么?object是基类啊!! //报错。不能从List<anonymous>换成List<object>. //var q=(List<object>)GetWholeProcessInfo(); //Console.WriteLine(q[0].ToString());

int i = 1; foreach (var item in (IEnumerable<object>)GetWholeProcessInfo()) { //类型都一样,所以输出一次即可:System.Int32,System.String,System.Int64 //输出所含的属性名的完整类型, if (i == 1) { Console.WriteLine(item.GetType()); i++; } //手动反射获取各属性,然后按自定义方法输出或获取值 //ID=1;Name=xxxxx,Size=2 Tools.OutputParams(item.GetType().GetProperty("ID").GetValue(item, null) , item.GetType().GetProperty("Name").GetValue(item, null) , item.GetType().GetProperty("Size").GetValue(item, null)); //系统默认方式输出:{ID=1,Name=xxxxx,Size=2} //和前者一个效果 //Console.WriteLine(item.ToString()); } } /// <summary> /// 获取进程列表 /// </summary> /// <returns>只能以object返回,除非手动写个属性类,循环迭代包装</returns> public static object GetWholeProcessInfo() { //返回进程列表的ID,Name,Size属性 return Process.GetProcesses() .Select(ps => new { ID = ps.Id, Name = ps.ProcessName, Size = ps.WorkingSet64 / 1024 / 1024, }) .ToList(); }

 

你可能感兴趣的:(匿名类)