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/fid3768...71457A936.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<Tinput, int
count)
{
foreach (IEnumerable<Tpermutation 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 2 5669
There is a good chance I don't understand your problem, but here is my take:
I don't think you want the permutations of the array elements, but instead
want a subset of the Cartesian product of the array with itself. E.G. if
the array is A= [a, b, c], the Cartesian product A x A is
{(a,a), (a,b), (a,c), (b,a), (b,b), (b,c), (c,a), (c,b), (c,c)}. The subset
you want excludes an element whose coords are the same, and considers as
duplicates 2 elements that have the same coords (e.g. (a,b) and (b,a) are
the same).
So, you want {(a,b), (a,c), (b,co)}
If you only have a single array, X, crossed only once with itself,
containing more than one element, some potential pseudo code would be:
for (int i = 0; i < x.Length-1; i++)
{
for (int j = i+1; j < x.Length; j++)
{
myFilterList.Add(x[i].MyToString() + " AND " +
x[j].MyToString())
}
}
In your case, x is the list of KeyValue pairs from the dictionary, and you
need to convert each KeyValue to a string via MyToString(), so as to form a
filter, which you add to a list, myFilterList.
What I don't understand about your example:
You have the same key, Column1 associated with two different values. I
don't think the Dictionary allows this.
"Assimalyst" <c_******@hotmail.comwrote in message
news:8c**********************************@s8g2000p rg.googlegroups.com...
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/fid3768...71457A936.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<Tinput, int
count)
{
foreach (IEnumerable<Tpermutation 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
Thank you Fred.
I think i had confused myself. Not sure I want permutations but rather
combinations.
Your code sample has given me some ideas that i think i can get
working with a bit of expansion.
I'll keep playing with it . . .
By the way, i think you understood my problem exactly. The bit you
didn't understand was just the way i represented it. I didn't have
duplicate keys it was more like
Column1 { 1, 2 }
Column2 { 17 }
Thanks again
On Nov 30, 6:14 pm, "Fred Mellender" <nospamPlease_fred...@gmail.com>
wrote:
There is a good chance I don't understand your problem, but here is my take:
I don't think you want the permutations of the array elements, but instead
want a subset of the Cartesian product of the array with itself. E.G. if
the array is A= [a, b, c], the Cartesian product A x A is
{(a,a), (a,b), (a,c), (b,a), (b,b), (b,c), (c,a), (c,b), (c,c)}. The subset
you want excludes an element whose coords are the same, and considers as
duplicates 2 elements that have the same coords (e.g. (a,b) and (b,a) are
the same).
So, you want {(a,b), (a,c), (b,co)}
If you only have a single array, X, crossed only once with itself,
containing more than one element, some potential pseudo code would be:
for (int i = 0; i < x.Length-1; i++)
{
for (int j = i+1; j < x.Length; j++)
{
myFilterList.Add(x[i].MyToString() + " AND " +
x[j].MyToString())
}
}
In your case, x is the list of KeyValue pairs from the dictionary, and you
need to convert each KeyValue to a string via MyToString(), so as to form a
filter, which you add to a list, myFilterList.
What I don't understand about your example:
You have the same key, Column1 associated with two different values. I
don't think the Dictionary allows this.
"Assimalyst" <c_oxt...@hotmail.comwrote in message
news:8c**********************************@s8g2000p rg.googlegroups.com...
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/fid3768...EE8E638B71457A...
) 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<Tinput, int
count)
{
foreach (IEnumerable<Tpermutation 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
This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Joanna Carter \(TeamB\) |
last post by:
I would like to copy the contents of a Dictionary<string, object> to another
Dictionary<string, object>. Do I have to iterate the source use...
|
by: Andrew Robinson |
last post by:
Any easy answer what is wrong here?
private List<string> BodyWords = new List<string>();
string word = "Andrew";
the following causes a...
|
by: Wilson |
last post by:
Hi,
How do get the Dictioanry object from FiedlInfo ?
my code :
fieldInfo = this.GetType().GetField("dictioanry1");
??Dictionary<string,...
|
by: buzzweetman |
last post by:
Many times I have a Dictionary<string, SomeTypeand need to get the
list of keys out of it as a List<string>, to pass to a another method
that...
|
by: Mark Rae |
last post by:
Hi,
Is it possible to create a case-insensitive List<stringcollection?
E.g.
List<stringMyList = new List<string>;
MyList.Add("MyString");
...
|
by: Mark S. |
last post by:
Hello,
The app in question is lives on a Windows 2003 server with .NET 2.0 running
IIS 6. The page of the app in question processes 2000 get...
|
by: Maikeru |
last post by:
I am trying to create a map that contains a string as the key and a list of strings as the value. Essentially it will be a dictionary where the key...
|
by: Andy B |
last post by:
I don't know if this is even working or not but here is the problem. I have
a gridview that I databound to a dictionary<string, stringcollection:
...
|
by: jandeerit |
last post by:
hi...
can anyone help to show me how to store the array in a dictionary object as shown below?
FROM: Array
: "PARAMETERS"
:...
|
by: tammygombez |
last post by:
Hey fellow JavaFX developers,
I'm currently working on a project that involves using a ComboBox in JavaFX, and I've run into a bit of an issue....
|
by: tammygombez |
last post by:
Hey everyone!
I've been researching gaming laptops lately, and I must say, they can get pretty expensive. However, I've come across some great...
|
by: better678 |
last post by:
Question:
Discuss your understanding of the Java platform. Is the statement "Java is interpreted" correct?
Answer:
Java is an object-oriented...
|
by: teenabhardwaj |
last post by:
How would one discover a valid source for learning news, comfort, and help for engineering designs? Covering through piles of books takes a lot of...
|
by: CD Tom |
last post by:
This happens in runtime 2013 and 2016. When a report is run and then closed a toolbar shows up and the only way to get it to go away is to right...
|
by: Naresh1 |
last post by:
What is WebLogic Admin Training?
WebLogic Admin Training is a specialized program designed to equip individuals with the skills and knowledge...
|
by: jalbright99669 |
last post by:
Am having a bit of a time with URL Rewrite. I need to incorporate http to https redirect with a reverse proxy. I have the URL Rewrite rules made...
|
by: antdb |
last post by:
Ⅰ. Advantage of AntDB: hyper-convergence + streaming processing engine
In the overall architecture, a new "hyper-convergence" concept was...
|
by: Matthew3360 |
last post by:
Hi there. I have been struggling to find out how to use a variable as my location in my header redirect function.
Here is my code.
...
| | |