zaria khan zaria khan - 1 year ago 77
C# Question

Select and WHERE using LINQ

I have following classes:

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; }

I have a working query. But Now I am trying use Where clause to get list of those
Package2.Name == "Annual"
. Is it possible to retrieve such information using the
clause and how?

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

Answer Source

So plans have packages that have packages and there should be at least one that has the Name "Annual"? You can add a condition:

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

This will return the plans that have at least one package with at least one package that has the name "Annual".

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download