Skip to content
This repository was archived by the owner on Nov 20, 2018. It is now read-only.

Commit 7be9cef

Browse files
committed
QueryBuilder Add overload for IEnumerable.
1 parent af279f6 commit 7be9cef

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

src/Microsoft.AspNet.WebUtilities/QueryBuilder.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,24 @@ public class QueryBuilder : IEnumerable<KeyValuePair<string, string>>
1414
{
1515
private IList<KeyValuePair<string, string>> _params;
1616

17-
public QueryBuilder()
18-
{
17+
public QueryBuilder()
18+
{
1919
_params = new List<KeyValuePair<string, string>>();
20-
}
20+
}
2121

2222
public QueryBuilder(IEnumerable<KeyValuePair<string, string>> parameters)
2323
{
2424
_params = new List<KeyValuePair<string, string>>(parameters);
2525
}
2626

27+
public void Add(string key, IEnumerable<string> values)
28+
{
29+
foreach (var value in values)
30+
{
31+
_params.Add(new KeyValuePair<string, string>(key, value));
32+
}
33+
}
34+
2735
public void Add(string key, string value)
2836
{
2937
_params.Add(new KeyValuePair<string, string>(key, value));

test/Microsoft.AspNet.WebUtilities.Tests/QueryBuilderTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ public void AddMultipleValues_AddedInOrder()
5050
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder.ToString());
5151
}
5252

53+
[Fact]
54+
public void AddIEnumerableValues_AddedInOrder()
55+
{
56+
var builder = new QueryBuilder();
57+
builder.Add("key", new[] { "value1", "value2", "value3" });
58+
Assert.Equal("?key=value1&key=value2&key=value3", builder.ToString());
59+
}
60+
5361
[Fact]
5462
public void AddMultipleValuesViaConstructor_AddedInOrder()
5563
{
@@ -73,5 +81,18 @@ public void AddMultipleValuesViaInitializer_AddedInOrder()
7381
};
7482
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder.ToString());
7583
}
84+
85+
[Fact]
86+
public void CopyViaConstructor_AddedInOrder()
87+
{
88+
var builder = new QueryBuilder()
89+
{
90+
{ "key1", "value1" },
91+
{ "key2", "value2" },
92+
{ "key3", "value3" },
93+
};
94+
var builder1 = new QueryBuilder(builder);
95+
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder1.ToString());
96+
}
7697
}
7798
}

0 commit comments

Comments
 (0)