Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Writing F# queries in LINQPad

Tags:

c#

linq

f#

linqpad

I'm trying to use F# to construct a query against a database, but I can't get even the simplest of queries to compile.

I can construct a C# query like this:

from c in Categories
select c

Everything works fine. However, when I try to do what should be the same thing in F#:

query { for c in Categories do
        select c }

I get the following error:

Invalid use of a type name and/or object constructor. If necessary use 'new' and apply the constructor to its arguments, e.g. 'new Type(args)'. The required signature is: Categories() : unit.

LINQPad comes bundled with a number of samples, but none of the F# samples actually show how to use it to query against a database. I've looked around the internet, also, but I can't find any examples using F# to query a database in LINQPad. What am I missing here?

like image 624
p.s.w.g Avatar asked Oct 15 '13 15:10

p.s.w.g


People also ask

How is cursive f written?

As you see in the diagram (above), begin the capital letter F on the top line, creating the top line of the F. From the center of the top of the F, bring your stroke down to the bottom line, making a small tail off the left side. After, cross the f in the center with a single line.


2 Answers

Out of curiosity I decided to try and get something working with F# in LinqPad. I was able to get it working by selecting "F# Program" instead of F# expression. I'm sure it's possible using just an expression, but I am 100% unfamiliar with F# so I just did enough to get a working example. Selecting this option gave me a single line of:

let dc = new TypedDataContext()

From there, I followed this example page to get this query working/executing:

let dc = new TypedDataContext()

let query1 = query { for c in dc.MyTable do
                     select c }

query1
|> Seq.iter (fun x -> printfn "SomeField: %s" x.SomeField)
like image 85
Ocelot20 Avatar answered Sep 21 '22 09:09

Ocelot20


You just need to add "this." in front of the mapped table if you want to run it as a F# Expression in LINQPad.

query { for c in this.Categories do
        select c }
like image 22
B Diehl Avatar answered Sep 21 '22 09:09

B Diehl