एफ # इंटरएक्टिव सत्र:
> let seq1 = seq [("city1", "pin1"); ("city2", "pin2")];;
val seq1 : seq<string * string> = [("city1", "pin1"); ("city2", "pin2")]
> let seq2 = seq [("pin1", "product1"); ("pin2", "product2")];;
val seq2 : seq<string * string> = [("pin1", "product1"); ("pin2", "product2")]
> Seq.zip seq1 seq2;;
val it : seq<(string * string) * (string * string)> =
seq
[(("city1", "pin1"), ("pin1", "product1"));
(("city2", "pin2"), ("pin2", "product2"))]
> Seq.zip seq1 seq2 |> Seq.map (fun (x,y) -> (fst x, snd y));;
val it : seq<string * string> =
seq [("city1", "product1"); ("city2", "product2")]
इसके अलावा, आप और दृश्यों पर LINQ क्वेरी का उपयोग करने के लिए, बस सुनिश्चित करें कि आप System.Linq विधानसभा के लिए एक संदर्भ है हो सक्षम होना चाहिए एक namespace खोला open System.Linq
अद्यतन: एक जटिल परिदृश्य इस प्रकार आप अनुक्रम भाव का उपयोग कर सकते में:
open System
let seq1 = seq [("city1", "pin1"); ("city2", "pin2"); ("city1", "pin3"); ("city1", "pin4")]
let seq2 = seq [("pin1", "product1"); ("pin2", "product2"); ("pin1", "product3"); ("pin2", "product1")]
let joinSeq = seq { for x in seq1 do
for y in seq2 do
let city, pin = x
let pin1, product = y
if pin = pin1 then
yield(city, product) }
for(x,y)in joinSeq do
printfn "%s: %s" x y
Console.ReadKey() |> ignore
स्रोत
2010-09-23 10:55:28
मैं एक कुशल कार्यान्वयन की तलाश में हूं क्योंकि उत्पाद/पिन की यह सूची काफी लंबी है। लिंक मेरे लिए ठीक काम करता प्रतीत होता है, लेकिन इसे एफ # से काम करने के लिए नहीं मिल सकता है। –
क्या एफ # अनुक्रम 'आईनेमेरेबल' को भी लागू करते हैं? यदि वे नहीं करते हैं, तो आप LINQ का उपयोग नहीं कर सकते हैं। –
हां, वे IENumerable लागू करते हैं। –