2013-04-01 124 views
4

這個問題更多地涉及到F#和C#相比,似乎冗長和不太清晰的部分。一個相對較小的問題,但一個越來越討厭我寫的數據庫查詢越多。F#查詢與C#LINQ

在C#中,我可以做LINQ和Entity Framework以下內容:

var q = (from row in db.LAYERS 
      where row.LIST1.Field1 == PARAM 
      select new MyClass(row.field1, row.field2, row.field3, row.field4)).ToList() 

的一點是我在這裏只是建立的查詢本身內部類一個新的列表。 而在F#這似乎並沒有工作,爲了得到我在做這樣的事情同樣的結果:

query { for row in db.LAYERS do 
     where (row.LIST1.Field1 = PARAM) 
     select row.field1, row.field2, row.field3, row.field4 } 
     |> Seq.map (fun row -> new MyClass(row.field1, row.field2, row.field3, row.field4) 

F#是需要我做的查詢序列的地圖,讓列表我想。

回答

5

你雖然沒有規定,無法編譯代碼,我猜你只需把你的對象創建括號中的表達式:

query { for row in db.LAYERS do 
     where (row.LIST1.Field1 = PARAM) 
     select (new MyClass(row.field1, row.field2, row.field3, row.field4)) }