2016-11-14 47 views
0

我有以下類:在lambda表達式怎麼辦複合條件

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; } 
    } 

現在我想,如果條件在那裏我要檢查,如果任何promptlevel等於「WARN」,並且提示使用對象還包含message中的字符串「HOPPER」。我怎樣才能做到這一點?

我試過這種方式,但無法弄清楚。我怎樣才能做到這一點?

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

    } 
+0

爲什麼你有一個叫做'Prompts'類,它只是包含了'名單'?爲什麼不直接在'PriceSelectionsResponse'上直接收集? –

+0

錯誤是什麼?似乎它應該工作 – jdmdevdotnet

+0

@DarrenYoung其實我們正在映射一個json請求到我們的模型類,所以不能幫助 –

回答

1

你的最後一條語句做的是說,如果任何提示的有level == "WARN"任何提示的有一個消息包含漏斗(不一定是相同的提示與水平=警告),然後進入if塊。你想要做的是檢查相同提示匹配兩個條件:

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

任何想法爲什麼我得到'將左邊的手柄類型字符串'在p.level.ToString()==「WARN」 –

+0

@zariakhan更新了我的答案,'level'是類型'object',所以你需要在將它與一個字符串比較之前做一個'ToString()',在你原來的文章中你錯過了 – KMoussa