LINQ to SQL - Dynamically Constructing Queries - Um... No!
Mike Taulty is talking about constructing queries dynamically in Linq to SQL. Sorry, but my response to that is Yuck! Here is the code that he shows:
NorthwindDataContext ctx = new NorthwindDataContext("server=.;database=northwind");
var query = from c in ctx.Customers
where c.Country == "Germany"
select c;
if (RuntimeCriterionOneApplies())
{
query = from c in query
where c.City == "Berlin"
select c;
}
if (RuntimeCriterionTwoApplies())
{
query = from c in query
where c.Orders.Sum(o => o.Freight) > 100
select c;
}
foreach (Customer c in query)
{
Console.WriteLine(c.CustomerID);
}
This is not constructing queries dynamically, it is choosing a query dynamically. This isn't what I talk about when I am talking about constructing a query dynamically. You can look here as what I consider a complex query that is being constructed dynamically.
Mike, how would you handle that scenario in Linq?
Update: I really should pay more attention when I am reading the code. Sorry Mike, the code that you have will work for the scenario that I have. I don't think that the syntax is very elegant for this scenario, but it will work. I missed the "from q in query" and read is as if a new query were constructed in each if.
Comments
Comment preview