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
Post a Comment