2016-04-18 132 views
0

我開發了一個dll,允許我使用我的API的某些方法。所有工作都很好,但是現在我遇到了linq問題。特別是我通常將所有從api返回的結果存儲在對象列表中。所以我可以遍歷它並分離每個項目。現在我有這個類:無法用linq創建嵌套列表中的對象列表

public class Agent 
{ 
     public int id { get; set; } 
     public string name { get; set; } 
} 

public class RootObject 
{ 
     public List<Agent> agent { get; set; } 
} 

我反序列化JSON是這樣的:

var obj = JsonConvert.DeserializeObject<RootObject>(responseText); 
return obj.Select(o => o.agent).ToList(); 

我現在可以正確地反序列化JSON的「原因是Agent列表,但我不能使用方法返回對象的列表:

return obj.Select(o => o.agent).ToList(); 

.Select被紅色下劃線,編譯器告訴我:

Agent.RootObject不包含定義選擇

相反,如果我使用:var obj = JsonConvert.DeserializeObject<List<RootObject>>(responseText);

所有返回行紅色下劃線:

不能轉換系統.Collections.Generic.List in System.Collections.Generic.List

那麼我該如何解決這個問題呢?

+0

如果'obj'是一個'RootObject',那麼你會希望'obj.agent.Select(o => o.company)',儘管我在你的類定義中沒有看到'company', –

+0

抱歉修復錯字。如果你看看代理類定義,你可以看到這是一個列表 – IlDrugo

+0

@IlDrugo在這種情況下,只需使用'obj.Agent'。 –

回答

3

SelectIEnumerable擴展方法,你不能從Select除非obj它實現IEnumerable。在你的情況下,你可能只需要return obj.agent;

您的第二次嘗試在整行上顯示錯誤,因爲您的返回類型很可能是錯誤的。我們需要看到你的整個方法,特別是簽名,才能告訴你確切的問題。

+0

呃讓我試試。是的..工作正常,謝謝:) – IlDrugo