У меня есть API, который собирает похожую информацию из разных источников. Что мне нужно сделать, так это сравнить эти источники и сохранить в переменной тот, который имеет самый высокий уровень достоверности. Я могу придумать несколько длинных способов, чтобы, возможно, выполнить sh это, создать несколько массивов или списков и перебирать каждый из них, пока не останется наивысшее значение, но мне интересно, есть ли более простой способ сделать это используя что-то linq.
{
"modeled_response": [
{
"source": "arturo_bulk_import",
"attributes": {
"roof_shape": {
"value": "Gable",
"confidence": 0.9522576226679909
},
"roof_slope": {
"value": "Low",
"confidence": 0.8674100762576565
}
}
},
{
"source": "region_state_arturo_bulk_import",
"attributes": {
"roof_shape": {
"value": "Gable",
"confidence": 0.8467693167596497
},
"roof_slope": {
"value": "Low",
"confidence": 0.8515481815500642
}
}
},
{
"source": "region_zipcode5_arturo_bulk_import",
"attributes": {
"roof_shape": {
"value": "Gable",
"confidence": 0.8353433674418161
},
"roof_slope": {
"value": "Low",
"confidence": 0.868985703016765
}
}
}
],
}
А затем я десериализую объект и сохраняю его в списке результатов. Не уверен, где go отсюда получить значение с наибольшим уровнем достоверности
class Program
{
static void Main(string[] args)
{
const string FILE_PATH = @"";
StreamReader r = new StreamReader(FILE_PATH);
string json = r.ReadToEnd();
RootObject deserializedProduct =
JsonConvert.DeserializeObject
<RootObject>(json);
List<RoofShape> resultsList = new List<RoofShape>();
int index = 0;
do
{
resultsList.Add(new RoofShape
{
confidence = deserializedProduct.modeled_response[index]
.attributes.roof_shape.confidence,
value = deserializedProduct.modeled_response[index]
.attributes.roof_shape.value
});
index++;
} while (deserializedProduct.modeled_response.Count > index);
}
}
public class RootObject
{
public string normalized_address { get; set; }
public string created_timestamp { get; set; }
public List<ModeledResponse> modeled_response { get; set; }
}
public class ModeledResponse
{
public string source { get; set; }
public Attributes attributes { get; set; }
}
public class Attributes
{
public string attributes { get; set; }
public RoofShape roof_shape { get; set; }
}
public class RoofShape
{
public string value { get; set; }
public decimal confidence { get; set; }
}