ラムダ式で使用されているが、値が異なるオブジェクトを返す方法はありますか? 私は「一種の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() 呼び出しを逆にすると、両方の結果は同じになります。君は正しかった!