Al mirar la respuesta de Marc (y en última instancia el método Zip
a partir de .Net 4), hay una cantidad significativa de sobrecarga para enumerar y unir filas donde eventualmente se desechan; ¿Se puede hacer eso sin ese desperdicio?
Al buscar la respuesta de Jon, crear una proyección de entidades dinámicas para referenciar los datos existentes y luego crear un nuevo conjunto de entidades desde ese espejo podría ser un impedimento para usar ese método si el recuento total de filas fuera demasiado grande.
El siguiente fragmento utiliza las referencias a los datos originales y los únicos desperdiciados derechos proyectados creados son los que tienen cadena nula que se eliminan posteriormente. Además, la enumeración de los datos se mantiene al mínimo.
String[] title = { "One","Two","three","Four"};
String[] user = { "rob","","john",""};
user.Select ((usr, index) => string.IsNullOrEmpty(usr)
? string.Empty
: string.Format("{0}:{1}", title[index], usr))
.Where (cmb => string.IsNullOrEmpty(cmb) == false)
Como un lado, esta metodología podría tener un conjunto de usuarios que es más pequeño en tamaño que el conjunto de títulos como un plus.
La función Aggregate
se pasa por alto, aquí está en acción:
int index = 0;
user.Aggregate (new List<string>(),
(result, usr) =>
{
if (string.IsNullOrEmpty(usr) == false)
result.Add(string.Format("{0}:{1}", title[index], usr));
++index;
return result;
})
'Zip' es ahora un método estándar de .NET 4.0. http://msdn.microsoft.com/en-us/library/dd267698.aspx – Mashmagar