Laden...

Linq Query dynamisch - z.B. variable Where Clause

Erstellt von manullino vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.090 Views
manullino Themenstarter:in
371 Beiträge seit 2008
vor 8 Jahren
Linq Query dynamisch - z.B. variable Where Clause

verwendetes Datenbanksystem: <SQL2014>

Hallo zusammen,

ist es moeglich ein Linq Statement dynamisch zu gestalten?
Wenn ich ein komplexes Linq Statement habe, moechte ich dieses gerne ungern zweimal pflegen, wenn sich z.B. nur die Where clause aendert.

Gibt es hierzu eine Moeglichkeit?

Bsp:

Mit Address Filter:


var result =  from o in Orders
             join ol in OrderLines
             on o.Id equals ol.OrderId
			 join ad in AddressBases
             on o.AddressId equals ad.Id
where o.Date >= start && o.Date <= end && 
o.AddressId == address
group new { ol.ProductLine, ad.Name1, ol.Price } 
by new {ol.ProductLine, ad.Name1  } into gr
select new
{
   ProductLine = gr.Key.ProductLine,
   Sum = gr.Sum(x => x.Price),
   Address = gr.Key.Name1
};

ohne Address Filter:


var result =  from o in Orders
             join ol in OrderLines
             on o.Id equals ol.OrderId
			 join ad in AddressBases
             on o.AddressId equals ad.Id
where o.Date >= start && o.Date <= end 
group new { ol.ProductLine, ad.Name1, ol.Price } 
by new {ol.ProductLine, ad.Name1  } into gr
select new
{
   ProductLine = gr.Key.ProductLine,
   Sum = gr.Sum(x => x.Price),
   Address = gr.Key.Name1
};

Vielen Dank,
Manullino

T
314 Beiträge seit 2013
vor 8 Jahren

Du kannst z.B. mit einer Func<Order,bool> in der where arbeiten.

16.834 Beiträge seit 2008
vor 8 Jahren

Simple, zusätzliche if-Abfrage zwischen Select und Group..

P
441 Beiträge seit 2014
vor 8 Jahren

Dynamically Composing Expression Predicates
wäre eine Möglichkeit den where-clause zu bilden.