Create an account

Very important

  • To access the important data of the forums, you must be active in each forum and especially in the leaks and database leaks section, send data and after sending the data and activity, data and important content will be opened and visible for you.
  • You will only see chat messages from people who are at or below your level.
  • More than 500,000 database leaks and millions of account leaks are waiting for you, so access and view with more activity.
  • Many important data are inactive and inaccessible for you, so open them with activity. (This will be done automatically)


Thread Rating:
  • 322 Vote(s) - 3.52 Average
  • 1
  • 2
  • 3
  • 4
  • 5
What's the most efficient way to combine two List(Of String)?

#1
Let's say I've got:

Dim los1 as New List(Of String)
los1.Add("Some value")

Dim los2 as New List(Of String)
los2.Add("More values")

What would be the most efficient way to combine the two into a single `List(Of String)`?

**Edit**: While I love the solutions everyone has provided, I probably should have also mentioned I'm stuck using the .NET 2.0 framework.
Reply

#2
Union() potentially, if you want a distinct list of entries (I beleive it only does a distinct), is another alternative.
Reply

#3
I think

los1.AddRange(los2)
Reply

#4
JaredPar's answer will give you an object that will enumerate over both lists. If you actually want a `List(Of String)` object **containing** these values, it's as simple as:

Dim combined As New List(Of String)(los1.Concat(los2));

**EDIT**: You know, just because you're using .NET 2.0 doesn't mean you can't roll your own versions of some of the LINQ extension methods you personally find useful. The `Concat` method in particular would be quite trivial to implement in C#\*:

public static class EnumerableUtils {
public static IEnumerable<T> Concat<T>(IEnumerable<T> first, IEnumerable<T> second) {
foreach (T item in first)
yield return item;

foreach (T item in second)
yield return item;
}
}

Then, see here:

Dim los1 as New List(Of String)
los1.Add("Some value")

Dim los2 as New List(Of String)
los2.Add("More values")

Dim combined As New List(Of String)(EnumerableUtils.Concat(los2, los2))

\* <sub>To be fair, this is a lot more straightforward in C# thanks to the `yield` keyword. It *could* be done in VB.NET, but it'd be trickier to provide deferred execution in the same manner that the LINQ extensions do.</sub>
Reply

#5
If you just want to see a sequence of the two lists then use the `Enumerable.Concat` method.

Dim combined = los1.Concat(los2)

This will return an `IEnemurable(Of String)` which contains all of the elements in `los1` and `los2`. It won't allocate a huge new collection but instead will iterate over the 2 separate collections.
Reply



Forum Jump:


Users browsing this thread:
1 Guest(s)

©0Day  2016 - 2023 | All Rights Reserved.  Made with    for the community. Connected through