entity framework 4 - LINQ Chaining Where clauses -


i trying write dynamic search , chain clauses have classes below , sample code.

public class person {     public int personid { get; set; }     //more fields .. }  //link table public class personaddress {     public int personid { get; set; }     public int addressid { get; set; }     //more fields .. }  public class address {     public int addressid { get; set; }     public int referencedataid { get; set; }     //more fields .. }  public class referencedata {     public int referencedataid { get; set; }     public string mydata { get; set; }     //more fields .. }   var query = (from p in people.include("personaddresses")  .include("personaddresses.address")  .include("personaddresses.address.referencedata")              select p);   if (!string.isnullorempty(searchname))       query = query.where(q => q.search.contains(person.searchname));  // how can access mydata if (!string.isnullorempty(searchcountry))                 query = query.where(q => q.search.where(a => a. == "ireland"); 

thanks.

if want filter related records not possible when using includes. include allows loading properties. possible way filtered navigation properties in single query manual query projection non entity or anonymous type:

var query = p in context.persons             select new              {                 person = p,                 addresses = p.personaddreeses                              .where(pa => pa.address.country == "ireland")             }; 

if want person contains address ireland without filtering loaded addresses cannot use query defined. expects expression resulting in bool not query. try this:

query = query.where(p => p.personaddresses                           .any(pa => pa.address.country == "ireland"); 

i'm absolutely not sure search in example.


Comments