C sharp - COMPARAR CADENAS

 
Vista:

COMPARAR CADENAS

Publicado por Lulu (40 intervenciones) el 30/01/2007 11:21:41
Hola a todos de nuevo, os quería preguntar cómo podría hacer lo siguiente:

tengo un ArrayList de elementos (guarda los registros completos de una tabla), y por otro lado tengo un string con un nombre de un campo de esa tabla.

ArrayList Registros=new ArrayList();

string Valor= "Fecha_inicio";

como puedo comparar este string con cada indice del arraylist¿?¿?¿? la historia es que tengo que buscar ese string dentro del arraylist y una ves lo encuentre, sacar el resto de datos del registro. Lo de sacar el resto de datos ya lo he solucionado, lo que me está desesperando es la comparación de cadenas. He probado con Elementos[i].ToString().Contains(Valor) como comparación, pero no me hace nada. ME podéis echar una mano¿? muchisimas gracias por adelantado. Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:COMPARAR CADENAS

Publicado por Yamil Bracho (1164 intervenciones) el 30/01/2007 12:54:26
Antes que nada que estas guardando en el ArrayList ? Objetos de alguna clase en especial ? Un arreglo de string ?....que ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMPARAR CADENAS

Publicado por Lulu (40 intervenciones) el 30/01/2007 13:32:55
En cada elemento del arraylist se guarda un registro completo de la tabla. Cada registro contiene: nombre, posicion de inicio, longitud, tipo y oden.

nombre
posicion
longitud
tipo
orden

y necesito que al introducir por teclado el nombre del campo deseado, me busque el nombre en el arraylist y me muestre el resto de datos. No sé si me explico bien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:COMPARAR CADENAS

Publicado por Yamil Bracho (1164 intervenciones) el 30/01/2007 17:58:59
Cuando dice un registro te refieres a un DataRow o a una clase que contiene la informacion del registro ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMPARAR CADENAS

Publicado por lulu (40 intervenciones) el 31/01/2007 10:14:31
es una clase que contiene los datos del registro:

public class Reg_Outrec
{
/// <summary> Nombre del campo. </summary>
private string Nombre ;
/// <summary> Posición de inicio del campo en la ficha outrec.</summary>
private string Inicio ;
/// <summary> Longitud del campo en la ficha outrec. </summary>
private int Longitud ;

// Constructor.
public Reg_Outrec( ) {
Nombre = "";
Inicio = "0000";
Longitud = 0;
}

/// <summary> Inicializa los atributos de la clase. </summary>
/// <param name="nombre2"> Nombre del campo en la ficha outrec. </param>
/// <param name="inicio2"> Posicion donde comienza. </param>
/// <param name="longitud2"> Longitud del campo en la ficha outrec. </param>
public Reg_Outrec(string nombre2, string inicio2 , int longitud2 )
{
Nombre = nombre2;
Inicio = inicio2;
Longitud = longitud2;
}

public Reg_Outrec(string nombre2, string inicio2, string tipo, int longitud2)
{
Nombre = nombre2;
Inicio = inicio2;
if (tipo.Equals("BYTEINT") || tipo.Equals("DECIMAL") || tipo.Equals("INTEGER") || tipo.Equals("SMALLINT"))
Longitud = 16;
else
Longitud = longitud2;
}
// Setters.
public void SetInicio ( string Inicio2 ) { Inicio = Inicio2 ; }
public void SetLongitud ( int Longitud2 ) { Longitud = Longitud2 ; }
public void SetNombre ( string Nombre2 ) { Nombre = Nombre2 ; }
// Getters.
public string GetInicio() { return Inicio; }
public int GetLongitud() { return Longitud; }
public string GetNombre() { return Nombre; }
}

//***********************************************************************************
//esto esta definido en otra clase: COutrec:
//lo que hace básicamente es devolver un registro indicándole mediante el índice el deseado:

public Reg_Outrec Obtener_Reg_Outrec(int indice)
{
return (Reg_Outrec)lista_campos[indice];
}

//*************************************************************

//Y por último el procedimiento desde el que quiero comparar registros:
//c_Sel es el campo seleccionado por teclado
//L_Campos es el arraylist de campos de la tabla

public void Cargar_Registros(string C_Sel)
{
int Contador;
//calculamos el registro en el que nos encontramos y obtenemos sus valores
for (Contador = 0; Contador < L_campos.Count-1 ; Contador++)
{
//recorremos el array en busca del campo
//AQUI ES DONDE TENGO EL PROBLEMA, CREO, al usar el CONTAINS
//para buscar el campo seleccionado dentro del arraylist
if (L_campos[Contador].ToString().Contains(C_Sel))
{
//devolvemos los datos que nos interesa: longitud y posición:
Reg_Outrec Registro = new Reg_Outrec();//esto solo nos leeria un registro
Registro =(Reg_Outrec)r_Tabla._outrec.Obtener_Reg_Outrec(Contador);
if (Registro.GetNombre().ToString() =="")
{
//valores por defecto
longi = "0010";
posicinicio = "0001";
}
else
{
longi = Registro.GetLongitud().ToString();
posicinicio = Registro.GetInicio().ToString();
}

}
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:COMPARAR CADENAS

Publicado por Yamil Bracho (1164 intervenciones) el 31/01/2007 13:13:26
Ok. Primero le definiria el metodo ToString() a la clase Reg_Outrec y pudiera ser algo como

public override string ToString()
{
return GetNombre() + ";" + GetInicio() + "," + GetLongitud().ToString();
}

Ahora si puedes hacer dentro del for la comparacion

if (L_campos[Contador].ToString().Contains(C_Sel))
{
...
}

tambien puedes hacer lo siguiente :

foreach( Reg_Outrec Registro L_campos)
{
if (Registro.ToString().Contains( (C_Sel))
{
if (Registro.GetNombre().Length == 0)
{
//valores por defecto
longi = "0010";
posicinicio = "0001";
}
else
{
longi = Registro.GetLongitud().ToString();
posicinicio = Registro.GetInicio();
}
break;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMPARAR CADENAS

Publicado por lulu (40 intervenciones) el 31/01/2007 16:07:30
Muchas gracias por la ayuda. Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar