小编Joh*_*ohn的帖子

F#LINQ向SQL Server添加新行

我正在学习使用F#3.0的LINQ.我想知道如何重新编写旧代码以在F#3.0中使用新的LINQ功能例如,我在SQL Server 2008 R2中创建了一个简单的数据表,数据库名称是myDatabase.

-- Create the Table1 table.
CREATE TABLE [dbo].[Table1] (
    [Id]        INT        NOT NULL,
    [TestData1] INT        NOT NULL,
    [TestData2] FLOAT (53) NOT NULL,
    [Name]      NTEXT      NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);
Run Code Online (Sandbox Code Playgroud)

对于F#2.0,我可以使用数据集添加新行,如下所示:

#light
open System
open System.Collections.Generic 
open System.Data
open System.Data.SqlClient

let sqlConn = "server=(local); Integrated Security=True; Database=MyDatabase"
let connDB = new SqlConnection(sqlConn)
let sql = "SELECT * FROM Table1"
let da = new SqlDataAdapter(sql, connDB)
let ds  = new DataSet()
da.Fill(ds) |> ignore
let …
Run Code Online (Sandbox Code Playgroud)

f# linq-to-sql sql-server-2008-r2

4
推荐指数
1
解决办法
1318
查看次数

F#交换数据数组并获得正确的结果

let highs = [| 2; 4; 6 |]
let lows = [| 1; 5; 10 |]
Run Code Online (Sandbox Code Playgroud)

我想从上面得到2个数组:如果highs中的元素小于lows中的相应元素,则交换它们.所以,我可以得到最后的2个数组:

let trueHighs = [| 2; 5; 10 |]
let trueLows = [| 1; 4; 6 |]
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

f#

3
推荐指数
1
解决办法
216
查看次数

字段,构造函数或成员'AsyncReadToEnd'未定义错误

我正在学习RX(Reactive Extensions),并且发现有人在近一年前使用F#和RX发布了一些代码来制作一个简单的webCrawler.我试着看看我是否可以重用代码.我下载了RX,并创建了一个F#windows应用程序,添加了对System.Reactive的引用.我的IDE是VS 2010 Ultimate,RX版本是:1.1.11111.以下是代码:

#light
open System
open System.Linq
open System.Collections.Generic
open System.Net
open System.IO
open System.Threading
open System.Text.RegularExpressions
open System.Reactive
open System.Reactive.Linq

let create f =
    Observable.Create<_>(fun x ->
        f x
        new System.Action((fun () -> ())))

let ofAsync async =
    create (fun obs -> Async.StartWithContinuations(async, obs.OnNext,obs.OnError,obs.OnError))

let fromEvent (event:IEvent<_,_>) = create (fun x -> event.Add x.OnNext)

let tickEvent = new Event<unit> ()
let tickEventObs = tickEvent.Publish |> fromEvent

let fetch(url:string) =
    async { let req = WebRequest.Create(url)
            let! resp …
Run Code Online (Sandbox Code Playgroud)

f# system.reactive

3
推荐指数
1
解决办法
1132
查看次数

在F#中检索具有不同数量元素的元组数组

我有以下要求:根据第二个数组中元素的外观从第一个数组中获取元组数组:

let totals = [| ("old1", "new1"); ("old2", "new2");  ("old3", "new3"); ("old4", "new4")  |]
let changes = [| "new1"; "new4" |]
Run Code Online (Sandbox Code Playgroud)

我想要这个:

let updates = [| ("old1", "new1"); ("old4", "new4") |]
Run Code Online (Sandbox Code Playgroud)

如果两个数组总数和更改具有相同的长度,那么我认为这很容易:

let updates = Array.zip  changes totals
            |> Array.choose(fun (a, B) -> if a = fst(B) then Some (B) else None)
Run Code Online (Sandbox Code Playgroud)

不幸的是,总数和变化具有不同数量的要素; 因此,我找不到一种简单的方法来获得我需要的元素.

f#

2
推荐指数
1
解决办法
166
查看次数

F#查找具有某些条件的字典条目

let dTuples = new Dictionary<int, string * string * int>()
dTuples.Add(1, ("A", "OK", 1))
dTuples.Add(2, ("B", "NOK", 2))
dTuples.Add(3, ("C", "OK", 3))
Run Code Online (Sandbox Code Playgroud)

我想在字典中找到它们在值部分的第二个元素中具有"OK"的项目.我还想将结果转换为元组数组而不使用字典的关键部分.对于上面的例子,我需要这个:

let tuplesOK = [| ("A", "OK", 1); ("C", "OK", 3) |]
Run Code Online (Sandbox Code Playgroud)

如果您提供代码,请同时添加一些解释,以便我更好地理解它!谢谢,约翰

f#

0
推荐指数
1
解决办法
1023
查看次数