Jaquarh
Jaquarh

Reputation: 6683

ASP.NET/Entity : Issue with my Array Index

I have managed to pull out the FirstorDefault() in the Query, however, some of these address types in the database actually have more than 1 address: therefore, I am trying to build an array of every address regarding each one.

The current code:

int counter = 0;
        string queryID = "";
        List<string> busAddr = new List<string>();
        while (counter != busIDs.Count)
        {
            queryID = busIDs[counter];
            var gathered = (from c in db.tblbus_address where c.BusinessID == queryID && c.AddressTypeID == addrnum select c).ToArray();
            int gath = 0;
            if ((gathered[gath] as tblbus_address) != null && !string.IsNullOrEmpty((gathered[gath] as tblbus_address).Address1))
                {
                    var address = gathered[gath] as tblbus_address;
                    string test = "";
                    while (gath != address.Address1.Length)
                    {
                        var all = address.Address1;
                        test += address.Address1.ToString() + ",";
                    }
                    busAddr.Add(test);
                }
                else
                {
                    busAddr.Add("No address for this type exists...");
                }
                counter++;
                gath++;
            }

I am receiving an error:

Index was outside the bounds of the array.

at this line:

if ((gathered[gath] as tblbus_address) != null && !string.IsNullOrEmpty((gathered[gath] as tblbus_address).Address1))

Can anyone point me in the right direction? I know this structure is the issue but I cannot think how to approach the situation.

Upvotes: 0

Views: 31

Answers (1)

Carbine
Carbine

Reputation: 7903

You are trying to get the element gathered[gath] when there are no items in gathered. Adding a check for null and Any will help you

if(gathered!=null && gathered.Any() 
  && (gathered[gath] as tblbus_address) != null 
  && !string.IsNullOrEmpty((gathered[gath] as tblbus_address).Address1))
{
    ...
    ...
}

Upvotes: 1

Related Questions