2009-10-20 15 views
43

क्या सी # में F # की List.map फ़ंक्शन के बराबर है? यानी सूची में प्रत्येक तत्व को एक फ़ंक्शन लागू करें और परिणामों वाली एक नई सूची लौटाएं।एफ # List.map सी # में बराबर है?

कुछ की तरह:

public static IEnumerable<TResult> Map<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> funky) 
    { 
     foreach (TSource element in source) 
      yield return funky.Invoke(element); 
    } 

वहाँ पहले से ही एक तरह से बनाया गया है या मैं सिर्फ कस्टम विस्तार लिखना चाहिए?

उत्तर

76

है कि LINQ के Select - यानी

var newSequence = originalSequence.Select(x => {translation}); 

या

var newSequence = from x in originalSequence 
        select {translation}; 
14

ConvertAll में निर्मित समारोह है:

public List<TOutput> ConvertAll<TOutput>(
    Converter<T, TOutput> converter 
) 

नेट संस्करण 2.0 के बाद से उपलब्ध है।

MSDN कोड उदाहरण:

using System; 
using System.Drawing; 
using System.Collections.Generic; 

public class Example 
{ 
    public static void Main() 
    { 
     List<PointF> lpf = new List<PointF>(); 

     lpf.Add(new PointF(27.8F, 32.62F)); 
     lpf.Add(new PointF(99.3F, 147.273F)); 
     lpf.Add(new PointF(7.5F, 1412.2F)); 

     Console.WriteLine(); 
     foreach(PointF p in lpf) 
     { 
      Console.WriteLine(p); 
     } 

     List<Point> lp = lpf.ConvertAll( 
      new Converter<PointF, Point>(PointFToPoint)); 

     Console.WriteLine(); 
     foreach(Point p in lp) 
     { 
      Console.WriteLine(p); 
     } 
    } 

    public static Point PointFToPoint(PointF pf) 
    { 
     return new Point(((int) pf.X), ((int) pf.Y)); 
    } 
} 

/* This code example produces the following output: 

{X=27.8, Y=32.62} 
{X=99.3, Y=147.273} 
{X=7.5, Y=1412.2} 

{X=27,Y=32} 
{X=99,Y=147} 
{X=7,Y=1412} 
*/ 
संबंधित मुद्दे