LINQ is great; I’m having all kinds of use to it lately. The other day I needed to do something different, I needed to write a LINQ query dynamically, constructing the LINQ query as a String and then executing it (which is pretty common thing when you’re using SQL).
I was already convinced that I would need to spend a couple of weeks writing such functionality. Turns out that Microsoft has already written a LINQ Dynamic Query Library. It doesn’t come with the framework but you can download it and include in your project. Take a look at ScottGu’s Blog to see his post about it.
Here is an example:
Suppose I have a LocalDBDataSet with a mapping to the Table Person (Name, Sex, Phone).
If I wanted to get all the people in the table and perform a LINQ query to filter only the Males (M) I could do it like this:
PersonTableAdapter ta = new PersonTableAdapter(); DataTable dt = ta.GetData(); IEnumerable<LocalDBDataSet.PersonRow> drCollection = ((IEnumerable<LocalDBDataSet.PersonRow>)dt).AsQueryable().Where("SEX == @0", "M");
I know this isn’t the most exciting example ever and I would need dynamic LINQ to do it but I just wanted to show you what you could accomplish. You get the idea, right?
With this kind of resource you could accomplish a lot of cool stuff. In the next post I’ll show how you can write a Cache class that can be queried with LINQ to avoid unnecessary trips to the database.