Bir linq sorgusu oluşturulurken çoğu zaman statik şart kullanımı yeterli olabiliyor ama bazı durumlarda where içerine yazılan şart ifadesi duruma göre değişebiliyor. Örneğin bir raporlama yapıldığında kullanıcının seçtiği seçeneklere göre bir şart cümlesinin oluşturulması gerekmektedir.
Linqte dinamik şart cümlesi oluşturmak için öncelikle projemize System.Linq.Dynamic
referansını eklememiz gerekmektedir.
Referansı ekledikten sonra yapmamız gereken linq sorgumuzu şu şekilde yazmaktır:
var people1 = people.Where("Id > 3 OR Name = \"Sait\"");
Böylece where içindeki şartımızı dinamik olarak oluşturmuş olduk.
Entity Framework kullanırken zorluk çıkaran bir diğer durumda lazy loadingin pasif olması durumunda anahtarla başka tablolara bağlı olan nesnelerin Include ile sorgula eklenmesi durumudur. Burada da Include edilecek olan nesneler duruma göre değişebiliyor. Bu durumda Include edilecek nesneleri dinamik olarak sorguya eklememiz gerekmektedir. Bu şekilde çalışan örnek bir kod parçası:
List includeList = new
List();
LibraryContext entity = new
LibraryContext();
IQueryable jobGroups = entity.JobGroups.Where(j => j.Id == id);
foreach (string s in includeList)
{
jobGroups.Include(s);
}
List groups = jobGroups.ToList();