C# Converting List to List

后端 未结 6 1683
星月不相逢
星月不相逢 2020-12-14 07:07

I have a List and I want to convert it to a List. Is there any way to do this other than just looping through the Li

相关标签:
6条回答
  • 2020-12-14 07:31

    You can use Select or ConvertAll. Keep in mind that ConvertAll is available in .Net 2.0 too

    0 讨论(0)
  • 2020-12-14 07:34

    You can use ConvertAll method inside of .Net Framework 2.0 here is an example

            List<int> lstInt = new List<int>(new int[] { 1, 2, 3 });
            List<double> lstDouble = lstInt.ConvertAll<double>(delegate(int p)
            {
                return (double)p;
            });
    
    0 讨论(0)
  • 2020-12-14 07:40

    You can use Select as suggested by others, but you can also use ConvertAll:

    List<double> doubleList = intList.ConvertAll(x => (double)x);
    

    This has two advantages:

    • It doesn't require LINQ, so if you're using .NET 2.0 and don't want to use LINQBridge, you can still use it.
    • It's more efficient: the ToList method doesn't know the size of the result of Select, so it may need to reallocate buffers as it goes. ConvertAll knows the source and destination size, so it can do it all in one go. It can also do so without the abstraction of iterators.

    The disadvantages:

    • It only works with List<T> and arrays. If you get a plain IEnumerable<T> you'll have to use Select and ToList.
    • If you're using LINQ heavily in your project, it may be more consistent to keep using it here as well.
    0 讨论(0)
  • 2020-12-14 07:40

    You can use a method group:

    lstDouble = lstInt.Select(Convert.ToDouble)
    
    0 讨论(0)
  • 2020-12-14 07:42

    You could do this using the Select extension method:

    List<double> doubleList = intList.Select(x => (double)x).ToList();
    
    0 讨论(0)
  • 2020-12-14 07:45

    You can use LINQ methods:

    List<double> doubles = integers.Select<int, double>(i => i).ToList();
    

    or:

    List<double> doubles = integers.Select(i => (double)i).ToList();
    

    Also, the list class has a ForEach method:

    List<double> doubles = new List<double>(integers.Count);
    integers.ForEach(i => doubles.Add(i));
    
    0 讨论(0)
提交回复
热议问题