2013-04-01 5 views
4

Этот вопрос больше связан с тем, что кажется многословием и меньшей ясностью со стороны F # по сравнению с C#. Относительно небольшая проблема, но одна из них становится все более раздражающей, чем я пишу больше запросов к базе данных.F # query vs 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 # требует, чтобы я сделал карту на последовательность запросов, чтобы получить список I хотеть.

ответ

5

Хотя вы не предоставили код, который не может скомпилировать, я предполагаю, что вам просто нужно положить выражение создания объекта в скобках:

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