有没有办法返回 lambda 表达式中使用的对象,但具有不同的值?我一直在使用“一种 linq-select”的方式,但我想做这样的事情:
let bob= tab
|> Seq.map (fun x -> ignore (x.Value=x.Value+1); x)
|> Seq.iter (fun x -> x.Dump())
使x
我序列中的所有 's 的值 +1'ed。
而不是这样做:
let bob= tab
|> Seq.map (fun x -> Ville(IdVille= 9, NoVille=x.Value+1, Nom=x.Nom, __RowVersion = x.__RowVersion))
|> Seq.iter (fun x -> x.Dump())
编辑:
我期望得到什么:从这里,序列的转储,因此 Iter 和 Dump ......我想要序列是什么?这是一个例子,原始序列,但是在对每个元素应用一个函数并获得结果的副本之后......(对原始序列没有副作用)。
例如,我有一个名字序列,我想要一个原始序列的副本,但名字是大写的。现在想象一下,但是从数据库中获取一系列对象。
编辑2:
我用 LinqPad 和 AdventureWorks 数据库做了一个测试,我这样做了:
let dc = new TypedDataContext()
let tab = dc.GetTable<Address>()
let bob = tab
|> Seq.map (fun x -> ignore (x.AddressLine1 <- "Bob"); x)
tab.Dump()
bob.Dump()
2 Dump() 结果是不同的。如果我反转 2 Dump() 调用,则两个结果都是相同的。你是对的!