我在C#中处理数组,如下面的代码所示,uricontent是一个List,其中每个字符串包含一个JSON值,我可以解析内容,但是,我想要另外一个数组或用于存储每个已解析值的列表,在下面的示例中,rooms变量可以存储每次一个JSON解析值,现在我希望将这些已解析的值存储在一个数组中。
int i = 0; while (uricontent.Count != 0) { var rooms = JObject.Parse(uricontent[i].ToString()) ["rooms"] .Select(x => new { roomID = (string)x["room_name"], Name = WebUtility.HtmlDecode((string)x["room_name"]), Price = PriceHelper.Convert((string)x["discountedTotal"]), Currency = (string)x["currency"], Occupan = (int)x["adult"] }).ToArray(); i++; }
rooms {<> f_ AnonymousType11 [1]<> f _AnonymousType11 []
[0] {roomID ="高级1楼",姓名="高级1楼",价格= 207.4,货币=" EUR",Occupan = 2}
如上所示,房间会在每次迭代中覆盖数据,如何将这些值存储在另一个数组中 [1] ..... [2] ..... ....
由于
答案 0 :(得分:0)
我认为您需要的是SelectMany
方法。 SelectMany
连接内部IEnumerables
语句生成的所有Select
,并将它们作为单个IEnumerable
返回,然后可以将其转换为数组:
var rooms = uricontent
.SelectMany(
uriContentElementJson =>
{
JObject uriContentElement = JObject.Parse(uriContentElementJson);
return uriContentElement["rooms"].Select(
room => new
{
RoomID = (string)room["room_name"],
Name = WebUtility.HtmlDecode((string)room["room_name"]),
Price = PriceHelper.Convert((string)room["discountedTotal"]),
Currency = (string)room["currency"],
Occupant = (int)room["adult"]
});
})
.ToArray();