2016-04-18 11 views
0

私は自分のAPIのいくつかのメソッドを使用できるようにするDLLを開発しました。すべてうまく動作していますが、今は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

SelectあなたはobjからSelectそれはIEnumerableを実装していない限りできない、IEnumerable拡張メソッドです。あなたの場合、おそらくreturn obj.agent;が必要です。

戻り値の型が間違っている可能性が高いため、2回目の試行では行全体にエラーが表示されています。正確な問題を伝えるには、あなたの方法全体、特に署名を確認する必要があります。

+0

私は試してみましょう。はい。うまく働いて、ありがとう:) – IlDrugo

関連する問題