Home > .NET 4.0, C# 4.0 > Join Two Array – Zipping

Join Two Array – Zipping

Last week I had a requirement where I need to Join two array,there was no relation that I could use to  join LINQ.

Int32[] iArrayOne = {12,34,45,89};

String[] sArrayTwo= { “Value1”,”value2”,”value3”,”Value4”}

Later which I posted a question in SO,in fact it was not possible directly in LINQ.Eric has written a Post that solves my requirement. Yes the operation is termed as Zipping. Until .NET 4.0 we need to use the below snippet to achieve it and starting 4.0 we will have that function as part of the .NET.

public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>
(this IEnumerable<TFirst> first,
IEnumerable<TSecond> second,
Func<TFirst, TSecond, TResult> resultSelector)
{
if (first == null) throw new ArgumentNullException("first");
if (second == null) throw new ArgumentNullException("second");
if (resultSelector == null) throw new ArgumentNullException("resultSelector");
return ZipIterator(first, second, resultSelector);
}

private static IEnumerable<TResult> ZipIterator<TFirst, TSecond, TResult>
(IEnumerable<TFirst> first,
IEnumerable<TSecond> second,
Func<TFirst, TSecond, TResult> resultSelector)
{
using (IEnumerator<TFirst> e1 = first.GetEnumerator())
using (IEnumerator<TSecond> e2 = second.GetEnumerator())
while (e1.MoveNext() && e2.MoveNext())
yield return resultSelector(e1.Current, e2.Current);
}
Zipping operation is defined as   var qry = from row in iArrayOne.Zip(sArrayTwo, (temp1, temp2) => 
new { ArrayObject1 = temp1, ArrayObject2 = temp2 })
Tags : ,
Advertisements
Categories: .NET 4.0, C# 4.0
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: