2016-04-18 134 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