Solved

Search Multidimensional Array for Specific Column Value

Posted on 2014-01-23
4
397 Views
Last Modified: 2014-01-23
I have the following array:

      // Declare array  
        public string[,] arrDeck = new string[3, 4];
 
        // Constructor
        public MainPage()
        {
            InitializeComponent();

           // populate multidimension array (two dimensions)
            arrDeck[0, 0] = "a2";
            arrDeck[0, 1] = "This is not a recommended starting hand";
            arrDeck[0, 2] = "5.4 Pct";
            arrDeck[0, 3] = "153";

            arrDeck[1, 0] = "a2s";
            arrDeck[1, 1] = "You need 3 callers in an unraised pot. You need 4 callers in a raised pot.";
            arrDeck[1, 2] = "12.7 Pct";
            arrDeck[1, 3] = "39";
        }

How do I search to find "a2s" ?

Thanks,
0
Comment
Question by:Dovberman
  • 3
4 Comments
 
LVL 35

Accepted Solution

by:
Robert Schutt earned 300 total points
ID: 39803275
Maybe something like this:
        /// <summary>
        /// Search 2 dimensional array for a specific string in a specific position
        /// </summary>
        /// <param name="arr">the array to search through</param>
        /// <param name="fnd">the string to find</param>
        /// <param name="ps">the position (2nd array dimension) where the string must be located</param>
        /// <returns>the index (1st dimension) where it was found, or -1 if not found</returns>
        protected int getIndex(string[,] arr, string fnd, int ps) {
            if (ps >= 0 && ps <= arr.GetUpperBound(1)) {
                int p = -1;
                while (++p <= arr.GetUpperBound(0)) {
                    if (arr[p, ps] != null && arr[p, ps].Equals(fnd))
                        return p;
                }
            }
            return -1;
        }

Open in new window

Example for calling code:
            int i = getIndex(arrDeck, "a2s", 0);
            string message;
            if (i >= 0) {
                message = arrDeck[i, 1];
            } else {
                message = "not found";
            }

Open in new window

I chose to return index only because you may want to reference the other items from the same calling code as well.
0
 

Author Comment

by:Dovberman
ID: 39803637
I have never used this technique before.  It seems more efficient than a For each or Do Until loop.  I will step through it to get a better understanding.

Thanks,
0
 

Author Comment

by:Dovberman
ID: 39803677
Yes, the row index is what I needed.  Then I can get other columns from the found row.
Thank  you,
0
 

Author Closing Comment

by:Dovberman
ID: 39803683
Yes, the row index is what I needed.  Then I can get other columns from the found row.
Thank  you,
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
This Micro Tutorial will teach you how to censor certain areas of your screen. The example in this video will show a little boy's face being blurred. This will be demonstrated using Adobe Premiere Pro CS6.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

863 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

23 Experts available now in Live!

Get 1:1 Help Now