Solved

How can I compare columns in a dataset for equal and not equal values?

Posted on 2007-11-16
4
815 Views
Last Modified: 2012-05-05
hi all, i have a dataset that contains 4 columns, employee key, employee name, manager key, manager name.  i need to be able to list a set of rows of discrepancies where emp key = mgr key and names are different, or if emp name = mgr name, list the keys that are different.

so if employee key = 123 and employee name for key 123 is kelly, and manager key = 123 and manager name for mgr key 123 is matt, then i need to list that as a row, since the names don't match the equal keys.

i have a loop (below) going through the dataset looking for the discrepancies, but it's proving too slow on larger datasets where there is 50,000 + rows.  What I need is help with possibly setting up a relationship or filtered view to the dataset to accomplish the same thing.  Performance is really what i'm looking for here.

Thanks in advanced!

DataTable _dt = _ds.Tables[0];

for (int i = 0; i < _dt.Rows.Count; i++)
{
    for (int j = 0; j < _dt.Rows.Count; j++)
    {
       if ((_dt.Rows[i][_employeeKey].ToString() == _dt.Rows[j][_managerKey].ToString() &&
         _dt.Rows[i][_employeeName].ToString() != _dt.Rows[j][_managerName].ToString()) ||

         _dt.Rows[i][_employeeName].ToString() == _dt.Rows[j][_managerName].ToString() &&
         _dt.Rows[i][_employeeKey].ToString() != _dt.Rows[j][_managerKey].ToString() )
        {
        //add row
        }

0
Comment
Question by:kellyclu
  • 2
  • 2
4 Comments
 
LVL 16

Accepted Solution

by:
anoyes earned 500 total points
Comment Utility
You might have better luck offloading that to your DB server.  MS SQL?  You could create a view or stored proc that would take care of finding your discrepancies, and then the ASP only has to list what comes out of that.  Is this a viable option?  If you can give a little info on how your DB is set up I can give you the SQL to do it.
0
 

Author Comment

by:kellyclu
Comment Utility
not an option, the dataset is generated from the user choosing a file with several columns in it.  they then select which columns they want to be the emp key/name, and mgr key/name.  so the columns are coming from 4 drop downs on a web page listing all the available columns in the file.

so the user is looking for file discrepancies between values they choose, i was trying to make the question easier by not going there.

tried:
string _filter = _employeeKey + " = " + _managerKey + " AND " + _employeeName + " <> " + _managerName;
DataRow[] _rows = _dt.Select(_filter);

no rows are returned because it's all in one table. i've been thinking about creating a relation between to dataviews, but haven't been able to make it work.
0
 
LVL 16

Expert Comment

by:anoyes
Comment Utility
Here's a tutorial about DataViews - don't know if it'll help any: http://aspnet.4guysfromrolla.com/articles/040203-1.2.aspx

But what about trying:
Dim dv As DataView = _ds.Tables(0).DefaultView
dv.RowFilter = "_employeeKey = _managerKey AND _employeeName <> _managerName"

This would only give you one set of discrepancies, but if this works you could easily do another one for the other set.
0
 

Author Comment

by:kellyclu
Comment Utility
the dataview provided has the same problem as my filter string posted right before your's.

the rows in the dataset are like this:

empkey  empname  mgrkey  mgrname

so what we're both doing is going through the dataset one row at a time looking for equal keys, different names.  

if data was
123 matt 234 kelly
234 linda 123 matt

you won't find any discrepancies because 123 is not = to 234, and 234 is not = 123, the check is going through the dataset one row at a time.

i need to go through the data set so the 123 for the emp key is compared to the 123 of the mgr key.  so instead of comparing each individual row, i need to take the emp key 123 for matt, and look for the 123 mgr key (next line), then mark THAT as a discrepancy because the 234 name (linda) is not the same as the previous 234 (kelly).

0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now