2016-02-02 22 views
0

如何将属性名称设置为我的列表的每个值?为列表c中的每个项目设置属性名称#

这是我的名单,我的“的foreach”它

List<object> list = new List<object>(); 

foreach (var item in db.Pos) 
{ 
    list.Add(item.Description); 
    list.Add(item.Pdv); 
    list.Add(item.Rid); 
    list.Add(total);  
} 

我怎么可以给它一个属性名称每个值,如:房产Description = list.Add(item.Description)

+1

你为什么要做到这一点考虑增加的原因。否则,可能需要一些带表达式的“创意”解决方案(或者更复杂),因为值没有与它们相关联的源。 –

+0

也许您需要使用字典集合而不是List? – Maybe

+0

Arturo Martinez,你为什么认为VBA标签(listobject)对于这个C#问题如此重要,所以你决定把它添加回来? –

回答

2

鉴于您db.Pos有对象的集合也许词典列表可以帮助你,样品:

var list = new List<Dictionary<string, object>>(); 

foreach (var item in db.Pos) 
{ 
    var dic = new Dictionary<string, object>(); 
    dic.Add("Description", item.Descripcion); 
    dic.Add("Pdv", item.Pdv); 
    dic.Add("Rid", item.Rid); 
    dic.Add("Total", total);  

    list.Add(dic); 
} 

然后你就可以尝试读取属性:

var description = list[0]["Description"]; 
1

鉴于你澄清,你想你的数据序列化到JSON,考虑使用匿名类型:

var items = db.Pos.Select(item => new 
{ 
    Description = item.Description, 
    Pvd = item.Pvd, 
    Rid = item.Rid, 
    Total = total 
}); 

注:这我不清楚变量“总”被定义,其中...

这应该很好地序列化为您的对象数组。

+0

我减少了foreach循环,使它更容易理解,但我需要我的列表具有属性他们自己的,因为我的列表将比我的Json有更多的列,这就是为什么我想添加属性列表中的每个项目,然后序列化它 –

+0

因此,那么它不是很明显,你的目标是什么。如果你以某种方式修改了你的代码以试图“简化”你的问题,那么你就更难以理解你的任务了。您发布的代码将生成一系列所有堆叠在一起的项目的狭窄阵列。这是你想要的吗? –

0

我不确定对象的类是什么,但我写了一个类似的例子,你只需要将学生类的名字替换为你的类名即可。

List<student> students = new List<student>(); 

    foreach (var each in db.students) 
    { 
     students.Add(new student 
     { 
      id = each.id, 
      name = each.name, 
      address = each.address 
     }); 
    } 

假设你有下面的类

public class student 
    { 
     public int id { get; set; } 
     public string name { get; set; } 
     public string address { get; set; } 
    } 
相关问题