4

I am having an issue converting type. I was trying code like this (minimal, detailed code later):

string cityType = "City1";
int listingsToSearch = 42;
if (cityType = "City1") // <-- error on this line
{
    listingsToSearch = 1;
}

But "if" statement to convert the cities but I keep getting:

cannot implicitly convert type 'string' to 'bool'


What I'm trying to achieve: I have a search engine that has a textbox for the search text and two radio buttons for the search location ( IE City1 or City2 )

When I receive the search text and radio buttons they are in the form of a string

string thesearchtext, thecitytype;
thesearchtext = HttpContext.Current.Request.QueryString["s"].ToString();
thecitytype = HttpContext.Current.Request.QueryString["bt"].ToString();

When I receive the cities radiobutton they will be in the format of "city1" or "city2".

What i need to do is convert the city radiobuttons into an int so that I can use them in my search dataset. I need to convert "city" to integer 1 and "city2" to integer 2.

I understand this is probably a simple type conversion however I just cannot figure it out. So far code with if gives me error above:

int listingsToSearch;
if (thecitytype = "City1")
{
    listingsToSearch = Convert.ToInt32(1);
}
else
{
    listingsToSearch = Convert.ToInt32(2);
}
Alexei Levenkov
  • 98,904
  • 14
  • 127
  • 179
Jason
  • 4,899
  • 12
  • 47
  • 56

2 Answers2

18

c# equality operator is == and not =:

if (thecitytype == "City1")
Alexei Levenkov
  • 98,904
  • 14
  • 127
  • 179
Rick Hochstetler
  • 3,043
  • 2
  • 20
  • 16
  • Note that you can also use `.Equals` which may be recommendation if you come from Java world, but there is no differences in comparing valid strings between `==` and `Equals` (see [Why would you use String.Equals over ==](http://stackoverflow.com/questions/1659097/why-would-you-use-string-equals-over)) – Alexei Levenkov Apr 03 '17 at 00:31
1

Here is some code in you can use with NUnit that demonstrates another technique for calculating listingToSearch - You will also notice that with this technique, you won't need to add extract if/else, etc as you add more cities - the test below demonstrates that the code will just try to read integer starting after "City" in the radio button label. Also, see the very bottom for what you could write in your main code

[Test]
public void testGetCityToSearch()
{

    // if thecitytype = "City1", listingToSearch = 1
    // if thecitytype = "City2", listingToSearch = 2

    doParseCity(1, "City1");
    doParseCity(2, "City2");
    doParseCity(20, "City20");        
}

public void doParseCity(int expected, string input )
{
    int listingsToSearch;
    string cityNum = input.Substring(4);
    bool parseResult = Int32.TryParse(cityNum, out listingsToSearch);
    Assert.IsTrue(parseResult);
    Assert.AreEqual(expected, listingsToSearch);
}

In your regular code you can just write:

string thecitytype20 = "City20";
string cityNum20 = thecitytype20.Substring(4);
bool parseResult20 = Int32.TryParse(cityNum20, out listingsToSearch);
// parseResult20 tells you whether parse succeeded, listingsToSearch will give you 20
dplante
  • 2,445
  • 3
  • 21
  • 27