Resharper offerto per girare il mio loop:
foreach (JObject obj in arr)
{
var id = (string)obj["Id"];
var accountId = (double)obj["AccountId"];
var departmentName = (string)obj["DeptName"];
i++;
}
... in una istruzione LINQ. Ho acconsentito e ha prodotto questo:
int i = 1 + (from JObject obj in arr let id = (string) obj["Id"] let accountId = (double) obj["AccountId"] select (string) obj["DeptName"]).Count();
Accendi i capricci, salta Jehoshaphat e Heavens to Murgatroid!
Questo mi chiede se i robot che diventano più intelligenti di me siano una buona cosa; quanto è sostenibile? Risposta: non lo è, dal momento che non riesco a capirlo; R # potrebbe anche averlo convertito in codice macchina, per tutto quello che posso fare io.
Devo ammettere che è "figo".
A che punto il perfetto diventa il nemico del bene in questo tipo di scenario?
UPDATE
In un secondo passaggio, R # mi dice per quella riga di LINQ, "Variabile locale" i "non viene mai usata"
Lasciandolo rimosso, la linea diventa:
var arr = JsonConvert.DeserializeObject<JArray>(s);
Hmm! Ora è grokkable; il motivo per cui stavo rompendo gli elementi giù in singoli vars prima era che potessi vedere cosa c'era dentro:
MessageBox.Show(string.Format("Object {0} in JSON array: id == {1}, accountId == {2}, deptName == {3}", i, id, accountId, departmentName));
... ma con quella messagebox commentata, immagino che quanto sopra sia meglio, dopotutto.