Jump to content
Sign in to follow this  
Menino

Comparar Strings

Recommended Posts

Menino

Bom dia, pessoal

Estou a tentar comparar um numero escolhido de uma comboBox com os que existem numa lista mas no if do compare tenho este erro

Cannot implicitly convert type int to bool, alguem me pode ajudar.

protected void RadComboBox1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
 {
	 if (string.IsNullOrEmpty(RadComboBox1.SelectedValue))
	 {
		 rcbParkingTime.ClearSelection();
		 rcbParkingTime.Text = string.Empty;

	 }
	 else
	 {
		 if (Int32.Parse(rcbParkingCompany.SelectedItem.Value) == 11)
		 {
			 rcbParkingTime.DataSource = PaySimplexWebLayers.Business.ParkingBLL.ListCSCParkingTimes(new DCParkingTimesIN() { ParcometerId = Int32.Parse(RadComboBox1.SelectedValue) });

			 DCGetCSCParcometerOUT[] parques = ParkingBLL.service.GetOeirasParcoMeters();
			 foreach (DCGetCSCParcometerOUT parquimetros in parques){

				 if(rcbParkingTime.Text.CompareTo(parquimetros))
				 {
				 System.Console.WriteLine("O parquimetro: " + parquimetros + " não existe.");
				 }
		 }

Obrigado :)

Share this post


Link to post
Share on other sites
nelsonr

O .CompareTo retorna um numero.

Se queres saber se é igual, experimenta

if(rcbParkingTime.Text.CompareTo(parquimetros)==0)

Já agora, o parquimetros tem o override do ToString para retornar uma string? (já que estás a comparar com um texto)

Edited by nelsonr

Share this post


Link to post
Share on other sites
Menino

Eu experimentei essa solução mas apareceu este erro:

Input string was not in a correct format.

Share this post


Link to post
Share on other sites
nelsonr

Qual o conteúdo do parquimetros? Tem algum campo do nome que devia ser usado para comparar? (parquimetro.Nome ou do tipo)

A class DCGetCSCParcometerOUT tem o override do ToString? Se não tiver. o CompareTo está a comparar com o objecto, e não com o nome do parquimetro

Share this post


Link to post
Share on other sites
Menino

O DCGetCSCParcometerOut tem

public partial class DCGetCSCParcometerOUT : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {

 [system.NonSerializedAttribute()]
 private System.Runtime.Serialization.ExtensionDataObject extensionDataField;

 [system.Runtime.Serialization.OptionalFieldAttribute()]
 private string AddressField;

 [system.Runtime.Serialization.OptionalFieldAttribute()]
 private string CodeField;

 [system.Runtime.Serialization.OptionalFieldAttribute()]
 private int IDField;

 [system.Runtime.Serialization.OptionalFieldAttribute()]
 private string LevelField;

 [system.Runtime.Serialization.OptionalFieldAttribute()]
 private string SubZoneField;

 [system.Runtime.Serialization.OptionalFieldAttribute()]
 private string ZoneField;

 [system.Runtime.Serialization.OptionalFieldAttribute()]
 private string[] getCSCParcometerErrorsListField;

Share this post


Link to post
Share on other sites
bioshock

int valor = int.TryParse(rcbParkingTime.Text, out valor);

E a partir daqui fazes a comparação do 'valor' com outra variável do mesmo tipo de dados.

Share this post


Link to post
Share on other sites
nelsonr

Então tens várias hipoteses (não testado):

Colocar o IDField como publico

[system.Runtime.Serialization.OptionalFieldAttribute()]
public int IDField;

e usar

if(Convert.ToInt32(rcbParkingTime.Text)==parquimetros.IDField)

Ou, adicionar um método publico para retornar o valor.

Dentro da class DCGetCSCParcometerOUT, adicionas

public int GetIDField() { return(this.IDField); }

e usar

if(Convert.ToInt32(rcbParkingTime.Text)==parquimetros.GetIDField())

Ou, adicionar o override do ToString para retornar o IDField.

Dentro da class DCGetCSCParcometerOUT adicionas:

public override string ToString() { return(this.IDField.ToString()); }

E na comparação podes deixar como está

if(rcbParkingTime.Text.CompareTo(parquimetros)==0)

Edited by nelsonr

Share this post


Link to post
Share on other sites
Menino

Pessoal muito obrigado pelas ajudas, experimentei e andei aqui de volta disto e desisti da maneira que estava a fazer e fiz esta, estou é só com um problema é que quando a lista é igual ao GetType(), este retorna na mesma a mensagem Esse parquimentro não é válido :s

protected void RadComboBox1_TextChanged(object sender, EventArgs e)
 {


	 foreach (RadComboBoxItem lista in RadComboBox1.Items)
	 {
	 if(lista.Equals(RadComboBox1.GetType()))
	 {
		 lblStatus.Text = "";
	 }
	 else
	 {
		 lblStatus.Text = "Esse parquímetro não é valido.";
	 }
	 }
 }

Obrigado pelas ajudas mais uma vez

Share this post


Link to post
Share on other sites
Menino

O que tenho é uma RadComboBox e quero ir buscar os items que esta tem inserida e o item que o utilizador escrever e comparar, se existir prossegue se não este diz Esse parquimetro não é válido.

Já alterei essa parte e tenho

if(lista.Equals(RadComboBox1.IsEmpty))

{

....

Share this post


Link to post
Share on other sites
brunobola

Não percebo a tua comparação:

if(lista.Equals(RadComboBox1.GetType()))

Não podes comparar ojectos com tipos, se quiseres tems de fazer typeof(lista).Equals(RadComboBox1.GetType())

Mas não percebo a lógica tb...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.