错误的if语句 – 不能隐式转换types为'布尔'

我有一个转换types的问题。 我正在尝试这样的代码(稍后,详细的代码):

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

但是“如果”声明转换城市,但我不断得到:

不能隐式地将types“string”转换为“布尔”


我想要实现的是:我有一个search引擎,它有一个search文本的文本框和两个search位置的单选button(IE City1或City2)

当我收到search文本和单选button时,它们以string的forms出现

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

当我收到城市单选button时,它们将采用“城市1”或“城市2”的格式。

我需要做的是将城市单选button转换为int,以便我可以在我的search数据集中使用它们。 我需要将"city"转换为整数1 ,将"city2"为整数2

我明白这可能是一个简单的types转换,但我无法弄清楚。 到目前为止的代码, if给我上面的错误:

 int listingsToSearch; if (thecitytype = "City1") { listingsToSearch = Convert.ToInt32(1); } else { listingsToSearch = Convert.ToInt32(2); } 

c#等号运算符是==而不是=

 if (thecitytype == "City1") 

这里有一些代码可以和NUnit一起使用,它演示了计算listingToSearch的另一种方法 – 您还会注意到,使用这种技术,您将不需要在添加更多城市时添加if / else等提取内容 – 下面的testing演示该代码将尝试读取在单选button标签中的“城市”之后开始的整数。 另外,请参阅您可以在主代码中编写的内容

 [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); } 

在您的常规代码中,您可以只写:

 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