Hi Greg, I assume that the ISAM data file system is a pre-requisite?
We use an ISAM file system as well and the platform supplier has provided a LINQ provider for us - no such luck with your ISAM provider? *Regards,* *Steven Parish* *Managing Director* *BusinessCraft Pty Ltd* *Address:* Level 1, 270 Turton Road, New Lambton NSW 2305 *Mail:* PO Box 57, Lambton NSW 2299 *M:* 0417 688 599 | *T:* 02 4965 5555 | *F:* 02 4965 5333 *www.businesscraft.com.au <http://www.businesscraft.com/>* On 22 October 2014 10:14, Greg Keogh <g...@mira.net> wrote: > Folks, I have a simple ISAM data source which can get-by-key or seek on > arbitrary indexes. I'm only using an Int32 primary key at the moment and > haven't needed to create more indexes so far. For a few thousand records > the performance is good, but as it grows and you ask for something like > this: > > var smiths = mydb.List<Customer>().Where(c => c.Surname = > "Smith").OrderBy(c => c.Postcode); > > It slows because this query inefficiently "Lists" the complete database > over the primary Int32 index and then uses LINQ-to-objects to give me the > result. In this case it's no better than reading a txt file. > > I realised of course that the real solution is to make my data source a > LINQ Provider that it can use its internal DB smarts to answer queries > efficiently. By looking at these articles: *Walkthrough: Creating an > IQueryable LINQ Provider > <http://msdn.microsoft.com/en-us/library/vstudio/bb546158(v=vs.110).aspx>* > and *Enabling a Data Source for LINQ Querying > <http://msdn.microsoft.com/en-us/library/bb882640.aspx>* I realised I was > up for a full-time specialist job for a few months. The latter page > describes how you can decide to make a *simple*, *medium* or *complex* > provider and it warns: "Developing a complex provider requires a > significant amount of effort". After reading about expression trees I > realise this is a highly specialised and complex topic. Even Oren who > created RavenDB says it took him longer to write the LINQ provider for the > database than it took to write the database itself, which is pretty > sobering! > > I'd still like to turn my data source into a *simple* LINQ provider if > possible, but lord knows where to start, maybe at the huge walkthrough in > my first link. I found re-linq <https://relinq.codeplex.com/> which > apparently takes some of the pain of working with expression trees, but I > haven't even found a tutorial on it yet. > > Has anyone got experience or comments on this subject? > > *Greg K* >