2016-11-15 8 views
0

を使用すると、私はクラスを次ていますを選択し、LINQ

public class CatalogResponseRootObject 
{ 
    public Plans Plans { get; set; } 
} 

public class Plans 
{ 
    public List<Plan> plan { get; set; } 
} 

public class Plan 
{ 
    public List<PlanPackage> Packages { get; set; } 
} 
public class PlanPackage 
{ 
    public List<Package2> Package { get; set; } 
} 
public class Package2 
{   
    public string Name { get; set; } 
} 

は私が作業クエリを持っています。しかし、今私はWhere節を使用して、cPlans WHERE Package2.Name == "Annual"のリストを取得しようとしています。 Where句を使用してそのような情報を取得することは可能ですか?

CatalogResponseRootObject catalogResponse = response; 
qualifiedPlans = (from cPlans in catalogResponse.Plans.plan 
            join qPlans in conversationIDResponsePlans.plan on cPlans.Id equals qPlans.Id 
            select cPlans).ToList(); 
+0

どのタイプが 'conversationIDResponsePlans'ですか? – Gusdor

+0

@Gusdor 'Plans' –

答えて

2

だから、計画はパッケージを持っているとName「年次」を有する少なくとも1つがあるはずのパッケージを持っていますか?

where cPlans.Packages.Any(p1 => p1.Package.Any(p2 => p2.Name == "Annual")) 

"Annual"という名前のパッケージが少なくとも1つ以上あるプランが返されます。

+0

ありがとうございますが、私はどこに私のクエリにwhere句を配置するのか混乱していますか? –

+1

@zariakhan 'select'の前と' join'の後 –