A
Assimalyst
Hi
I have a Dictionary<string, List<string>>, which i have successfully
filled. My problem is I need to create a filter expression using all
possible permutations of its contents.
i.e. the dictionary essentially creates the following array:
Key Value
Column1 1
Column1 2
Column2 17
I want to then create an number of filter expressions:
Column1 = 1 AND Column2 = 17
Column1 = 2 AND Column2 = 17
I used a permutation library i found PermuteUtils (
http://www.koders.com/csharp/fid3768925A9A54C7E9E853737EE8E638B71457A936.aspx
) and the following code:
Dictionary<string, List<string>> distinctCellValues = new
Dictionary<string, List<string>>();
ArrayList queryClause = new ArrayList();
{
foreach (KeyValuePair<string, List<string>> kvp in
distinctCellValues)
{
foreach (string value in kvp.Value)
{
queryClause.Add(kvp.Key + " = " + value);
}
}
//Convert array to string array
string[] queryClauseString = queryClause.ToArray(typeof(string)) as
string[];
CreateFilterPermutations<string>(queryClauseString,
distinctCellValues.Count);
}
private void CreateFilterPermutations<T>(IEnumerable<T> input, int
count)
{
foreach (IEnumerable<T> permutation in
PermuteUtils.Permute<T>(input, count))
{
foreach (T i in permutation)
{
filterExpressions.Add(i);
}
}
}
This seems to work OK as far as running the CreateFilterPermutations
method, where i just cannot get it to do what i need.
I've manage to get myself very confused by all this, and this only
contains 2 columns. Potentially i could need to be generating
permutations of 10 columns/values or more!! I'm hoping someone can
straighten out my thoughts before my head explodes!!
Thanks
I have a Dictionary<string, List<string>>, which i have successfully
filled. My problem is I need to create a filter expression using all
possible permutations of its contents.
i.e. the dictionary essentially creates the following array:
Key Value
Column1 1
Column1 2
Column2 17
I want to then create an number of filter expressions:
Column1 = 1 AND Column2 = 17
Column1 = 2 AND Column2 = 17
I used a permutation library i found PermuteUtils (
http://www.koders.com/csharp/fid3768925A9A54C7E9E853737EE8E638B71457A936.aspx
) and the following code:
Dictionary<string, List<string>> distinctCellValues = new
Dictionary<string, List<string>>();
ArrayList queryClause = new ArrayList();
{
foreach (KeyValuePair<string, List<string>> kvp in
distinctCellValues)
{
foreach (string value in kvp.Value)
{
queryClause.Add(kvp.Key + " = " + value);
}
}
//Convert array to string array
string[] queryClauseString = queryClause.ToArray(typeof(string)) as
string[];
CreateFilterPermutations<string>(queryClauseString,
distinctCellValues.Count);
}
private void CreateFilterPermutations<T>(IEnumerable<T> input, int
count)
{
foreach (IEnumerable<T> permutation in
PermuteUtils.Permute<T>(input, count))
{
foreach (T i in permutation)
{
filterExpressions.Add(i);
}
}
}
This seems to work OK as far as running the CreateFilterPermutations
method, where i just cannot get it to do what i need.
I've manage to get myself very confused by all this, and this only
contains 2 columns. Potentially i could need to be generating
permutations of 10 columns/values or more!! I'm hoping someone can
straighten out my thoughts before my head explodes!!
Thanks