Ir para o conteúdo
Menino

Comparar Strings

Mensagens Recomendadas

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 :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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)

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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;

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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)

Editado por nelsonr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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))

{

....

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.