如何使用c#将每个项目存储在json数组中

时间:2015-11-03 13:00:19

标签: c# json

我想将每个项目存储到一个放在foreach循环内的json数组。我怎么可能?

目前我的代码是

foreach (DataRow drow1 in alltheatre.Rows)
        {
            string theatname = drow1["TheatreName"].ToString();
            string latitude = drow1["Latitude"].ToString();
            string longitude = drow1["Longitude"].ToString();
            string theatname = drow1["TheatreName"].ToString();
            string theatid = drow1["TheatreDetailsId"].ToString();
            string theataddre = drow1["TheatreAddress"].ToString();
            string cntctnu = drow1["ContactNum"].ToString();
            string theatimg = drow1["TheatreImage"].ToString();
            string descr = drow1["TheatreDesc"].ToString();
            string mouvieid = drow1["MovieMasterId"].ToString();

                 array = new[]
                        {
                           new
                            {
                           Name = theatname,
                           Theatrdetailsid=theatid,
                           image=theatimg,
                           lat=latitude,
                           longi=longitude,
                           adress=theataddre,
                           contactnum=cntctnu,
                           desc=descr,
                            }
                          },
                        }
                      } 

在这里,我有一个foreach循环来获取有关影院的详细信息,我试图将每个数据存储到json数组,但我只能设法存储1个数据,即最后一个。如何解决此问题。< / p>

2 个答案:

答案 0 :(得分:1)

您需要在foreach循环之外声明新集合。你只有一个,因为每次都会创建一个新数组。

您应该使用List<T>而不是数组。这将更容易,除非您想使用LINQ或创建一个Rows集合大小的数组。

var array = new List<object>();

foreach (var row in alltheatre.Rows)
{
    // Get your properties

    array.Add(new 
    {
        // Set your properties
    });
}

答案 1 :(得分:1)

我会使用LINQ's Select来映射每一行:

IEnumerable<object> mapped = alltheatre.Rows.Select(row => new 
{
     Name = row["TheatreName"].ToString(),
     Theatrdetailsid = row["TheatreDetailsId"].ToString()
     // ...
});

如果您需要它在原始数组中,可以调用ToArray()

object[] mappedArray = mapped.ToArray();