C#-Linq按其他属性在列表属性中选择
我的反应课C#-Linq按其他属性在列表属性中选择,c#,linq,casting,C#,Linq,Casting,我的反应课 public class JSONResponse { public int return{ get; set; } public string[] message{ get; set; } public Data data{ get; set; } } public class Data { public Presence[] presences { get; set; } } public class Presence { public
public class JSONResponse
{
public int return{ get; set; }
public string[] message{ get; set; }
public Data data{ get; set; }
}
public class Data
{
public Presence[] presences { get; set; }
}
public class Presence
{
public string id { get; set; }
public string name{ get; set; }
public Field[] fields { get; set; }
}
public class Field
{
public string label{ get; set; }
public string value { get; set; }
}
我的新班级
public class MyClass
{
public int Id { get; set; }
public string Name{ get; set; }
public bool Temp{ get; set; }
}
在json类中,我有一些属性字段,它们有两个值(标签、值)
我希望转换到MyClass中,并根据字段的标签值设置临时属性获取value属性:
MyClass myclass = JSONResponse.data.presences.Select(x => new MyClass()
{
Id = Convert.ToInt32(x.id),
Name = x.name,
Temp = x.fields.Where(a => a.label == "Label") // i want the value property
}).ToList();
使用
FirstOrDefault
Temp = x.fields.FirstOrDefault(a => a.label == "Label")?.Value
LINQ有一组函数将列表映射到该列表的单个条目。我认为对你来说最正确的选择是
var result=JSONResponse.data.presences.Select(x=>newmyclass()
{
Id=转换为32(x.Id),
Name=x.Name,
Temp=x.fields.SingleOrDefault(a=>a.label==“label”)?.Value,
});
我建议将SingleOrDefault
置于FirstOrDefault
之上的原因是SingleOrDefault
在发现多个匹配项时引发异常。这样做,当存在重复标签时,您将得到一个异常,而不是可能的错误值