Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

F# List.map equivalent in C#?

Tags:

c#

.net

linq

f#

Is there an equivalent to F#'s List.map function in C#? i.e. apply a function to each element in the list and return a new list containing the results.

Something like:

    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);     } 

Is there already a built in way or should I just write the custom extension?

like image 864
Andrew Jones Avatar asked Oct 20 '09 11:10

Andrew Jones


People also ask

Facebook itu apa sih?

Facebook adalah media sosial dan layanan jejaring sosial online Amerika yang dimiliki oleh Meta Platforms.


2 Answers

That is LINQ's Select - i.e.

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

or

var newSequence = from x in originalSequence                   select {translation}; 
like image 97
Marc Gravell Avatar answered Oct 05 '22 00:10

Marc Gravell


ConvertAll is the built-in function:

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

Available since .NET version 2.0.

MSDN code example:

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}  */ 
like image 41
codeape Avatar answered Oct 04 '22 23:10

codeape