我开发了一个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
那我怎么解决这个问题?
答案 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
。
您的第二次尝试在整条线上显示错误,因为您的返回类型很可能是错误的。我们需要看到你的整个方法,特别是签名,告诉你确切的问题。