为对象C#中的每个项添加名称

时间:2017-01-25 18:10:53

标签: c#

我从存储过程运行并使用sqlDataReader reader读取它然后我有一个object []结果写入所有数据。数据如下所示:

 result:  { {[0],[1],[2]},{[0],[1],[2]},{[0],[1],[2]},{[0],[1],[2]},{[0],[1],[2]},{[0],[1],[2]}, ... }

一个真实的例子就像{{1,{1/18/2017},20},{2,{1/19/2017},21},{3,{1/20/2017},22}}

我想为每个子对象中的每个项添加项名称,并将json返回到我的javascript。所以预期的结果将是:

result = {{"ID":1, "Date":{1/18/2017},"value":20},
          {"ID":2,"Date":{1/19/2017},"value":21},
          {"ID":3,"Date":{1/20/2017},"value":22}}

任何人都知道正确的方法吗?使用LinqtoObject或lambda还是别的什么?

1 个答案:

答案 0 :(得分:0)

这是我的建议。创建一个结构:

struct MyThing
{
    public int ID { get; set; }
    public DateTime Date { get; set; }
    public int Value { get; set; }
}

然后像这样初始化你的列表:

var input = new List<MyThing>(new[] 
{ 
    new MyThing { ID = 1, Date = DateTime.Parse("1/18/2017"), Value = 20 }, 
    new MyThing { ID = 2, Date = DateTime.Parse("1/19/2017"), Value = 21 }, 
    new MyThing { ID = 3, Date = DateTime.Parse("1/20/2017"), Value = 22 } 
});

.NET是一种面向对象的语言,因此利用它,即创建类,或者在本例中为结构,以保存公共信息集。

此外,使用列表比使用数组要容易得多。

至于转换为JSON,我不是专家,但这是我为上述代码汇总的内容:

var serializer = new JavaScriptSerializer();
string jsonText = serializer.Serialize(input);

注意,您需要添加对System.Web.Extensions的引用并添加using指令:

using System.Web.Script.Serialization;