2016-11-14 6 views
0

Ich habe folgende Klassen:vorgehens Verbindung Bedingungen in Lambda-Ausdruck

public class PriceSelectionsResponse 
{ 
public Prompts Prompts { get; set; } 
} 

public class Prompts 
    { 
     public List<Prompt> prompt { get; set; } 
    } 

public class Prompt 
    { 
     public int code { get; set; } 
     public object level { get; set; } 
     public object message { get; set; } 
     public object details { get; set; } 
    } 

Jetzt möchte ich ein verwenden, wenn Zustand, in dem ich das überprüfen möchten, wenn eine promptlevel gleich „Warn“ und das prompte Objekt enthält auch Zeichenfolge "HOPPER" in message. Wie kann ich das machen?

Ich habe diesen Weg versucht, aber kann nicht herausfinden. Wie kann ich das erreichen?

if(PriceSelectionsResponseRootObject.Response.PriceSelectionsResponse.Prompts.prompt.Any(p => p.level == "WARN") && PriceSelectionsResponseRootObject.Response.PriceSelectionsResponse.Prompts.prompt.Where(p=>p.message.contains("Hopper")) { 

    } 
+0

Warum haben Sie eine Klasse namens 'Prompts', die nur eine' Liste enthält '? Warum haben Sie die Sammlung nicht direkt auf 'PriceSelectionsResponse'? –

+0

Was war der Fehler? Scheint so, als sollte es funktionieren – jdmdevdotnet

+0

@DarrenYoung Eigentlich ordnen wir eine JSON-Anfrage in unsere Modellklassen ein, daher kann es nicht helfen –

Antwort

1

Was Ihre letzte Aussage tut sagen wird, wenn eine der Aufforderungen level == "WARN" hat und eine der Aufforderungen hat eine Nachricht HOPPER enthält (nicht notwendigerweise die gleiche Abfrage mit level = WARNING) dann in den if-Block gehen. Was Sie tun möchten, ist Sie sicher, dass die gleichen prompt Streichhölzer beiden Bedingungen:

if(PriceSelectionsResponseRootObject.Response.PriceSelectionsResponse 
    .Prompts.prompt.Any(p => p.level.ToString() == "WARN" && p.message.ToString().Contains("HOPPER")) 
{ 
} 
+0

Irgendeine Idee, warum bekomme ich 'Cast die linke Hand, um Zeichenfolge einzugeben' bei 'p.level.ToString() ==" WARN "' –

+0

@zariakhan aktualisiert meine Antwort, 'Ebene' ist vom Typ' Objekt', so dass Sie brauchen Um ein 'ToString()' zu machen, bevor Sie es mit einem String vergleichen, haben Sie das in Ihrem ursprünglichen Beitrag verpasst – KMoussa