我有一个Hotel
的keyValupair详细信息:
//This is where the data comes from : -
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
dynamic hotels1 = (dynamic)json_serializer.DeserializeObject(jso);
var keyValuePairs = hotels1["hotels"];
var hotelList = keyValuePairs["hotels"]; // hotelList[0] ={'key'='Code' ;value='123'}
//{'key'='Name'
// ;value='Sheraton'}
如何将其转换为Hotel
列表
List<Hotel> hotaals = new List<Hotel>();
其中Hotel
是
public class Hotel {
public int code { get; set; }
public string name { get; set; }
}
我使用for循环来Map字段,但我的大老板说这效率很低,我必须使用Linq。
我使用的循环
foreach (dynamic h in hotelList) {
oneHotel = new Hotel();
oneHotel.code = h["code"];
oneHotel.name = h["name"];
myHotels.Add(oneHotel);
}
2条答案
按热度按时间nfzehxib1#
暴力的方法是通过硬编码属性将字典投影到对象上:
我还想质疑你的“伟大老板”所说的“效率低下”是什么意思。
qgelzfjb2#
首先,您可以获得初始数据:
var hotelList = keyValuePairs["hotels"];
然后使用linq创建新列表:
现在要弄清楚linq在幕后做的是一个遍历对象的迭代循环(就像foreach一样),为hotelList中的每个项目创建一个新的Hotel对象,并将它们作为
IQueryable<Hotel>
返回。如果不需要IQueryable<>
,只需应用.ToArray()
或.ToList()
现在听起来你的酒店详细信息的初始列表不是结构化的,所以你可能必须修改我上面提供的linq查询来适应列表的结构。
你可能需要更接近这个的东西: