c# - C# LINQ 投影到一个类
问题描述
我调用了一个 Web 服务,然后我得到了一个 JSON 格式的响应对象。
我想要一个列表中的结果,以便我可以枚举它们。
所以我有这段代码可以按预期工作。
var players = getPlayersResponse.Payload
.Select(p => new { p.Name, p.Pid, p.Model, p.Ip, p.Gid })
.ToList();
foreach (var p in players)
{
Players.Items.Add(p.Name);
}
我想返回一个已知类的列表,所以尝试了以下操作:
var players = getPlayersResponse.Payload
.Select(p => new Player { Name= p.Name, Pid= p.Pid, Model= p.Model, Ip= p.Ip, Gid= (int)p.Gid })
.ToList();
foreach (var p in players)
{
Players.Items.Add(p.Name);
}
和班级
public class Player
{
public string Name { get; set; }
public int Pid { get; set; }
public string Model { get; set; }
public string Ip { get; set; }
public int Gid { get; set; }
}
该版本不起作用(列表框未填充项目),我完全没有错误,编译器也不会抱怨。奇怪的是,如果我没有将 p.Gid 转换为 int,编译器确实会抱怨。在这两种情况下,它是相同的 json 结果。
我看不出我做错了什么。
解决方案
我通过改变这样的类解决了这个问题
public class Player
{
public string Name { get; set; }
public int Pid { get; set; }
public string Model { get; set; }
public string Ip { get; set; }
public int? Gid { get; set; }
}