无法使用linq

时间:2016-04-18 14:42:16

标签: c# linq

我开发了一个dll,允许我使用我的API的一些方法。一切都很好,但现在我遇到了linq的问题。特别是我通常将从api返回的所有结果存储在一个对象列表中。所以我可以迭代它并将每个项目分开。现在我有了这堂课:

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不包含Select

的定义

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

所有返回行都用红色加下划线:

  

无法转换System.Collections.Generic.List中的System.Collections.Generic.List

那我怎么解决这个问题?

1 个答案:

答案 0 :(得分:3)

Select是一种IEnumerable扩展方法,除非Select实现obj,否则IEnumerable不能return obj.agent;。在您的情况下,您可能只需要Dim A(4) As Integer Dim B() As Integer Dim i As Integer Dim j As Integer A(1) = 0 A(2) = 3 A(3) = 0 A(4) = 4 j = 1 For i = 1 To UBound(A) If A(i) = 0 Then ReDim Preserve B(j) B(j) = i j = j + 1 End If Next i

您的第二次尝试在整条线上显示错误,因为您的返回类型很可能是错误的。我们需要看到你的整个方法,特别是签名,告诉你确切的问题。