.Net overwrite(extend) array
NameValueCollection def = new NameValueCollection();
def.Add("p1", "v1");
def.Add("p2", "v2");
def.Add("p3", "v3");
NameValueCollection req = new NameValueCollection();
req.Add("p2", "new-v2");
req.Add("p1", string.Empty);
var x = from i in def.AllKeys.Union(req.AllKeys)
group i by i into g
select new { Key = g.Key, Value = (!string.IsNullOrEmpty(req[g.Key])) ? req[g.Key] : def[g.Key] };
foreach (var z in x)
{
System.Console.WriteLine(z.Value);
}