2013-06-21 11 views
5

Sto cercando di trovare il valore da dataview utilizzando il nome della colonna. Il mio set di dati mostra valore ma la mia condizione if restituisce false. Sto lavorando in asp.net usando C#.Trova valore dalla vista dati utilizzando il nome della colonna

Ho provato con codice diverso. Sto cercando di ottenere il valore come questo

dv[0].DataView.Table.Columns[0].ToString().Contains("52") 
    //RETURN FALSE 

OR 

dv[0].Equals("52") 
    // //RETURN FALSE 

O

dv[0].Find("52") 
    // //RETURN FALSE 

seguito è il mio set di dati enter image description here

+0

Sei alla ricerca di somthing come questo http://msdn.microsoft.com/en-us/library/yth8t382%28v=vs.90%29.aspx? – Karthik

risposta

0
int rowIndex = dv.Find("52"); 

if (rowIndex == -1) { 
    Console.WriteLine("No match found."); 
} 
else { 
    Console.WriteLine("{0}, {1}", 
    dv(rowIndex)("GBA_Nbr_GBAccount").ToString(), 
    dv(rowIndex)("GBA_Nam_GBAccount").ToString()); 
} 

penso che potrebbe essere la soluzione al vostro problema, o al perlomeno ti indirizzano nella giusta direzione.

2

Se la colonna "GBA_Nbr_GBAccount" è un tipo di stringa, potrebbe contenere spazi. È necessario ritagliare il testo prima di eseguire il confronto. Prova questo

dv[0]["GBA_Nbr_GBAccount"].ToString().Trim().Equals("52"); 
1

Si potrebbe utilizzare Linq di interrogare la DataTable o DataView. Ad esempio, supponendo che la colonna è di tipo stringa:

var condition = yourDataTable.AsEnumerable() 
          .Any(r => r.Field<string>("GBA_Nbr_GBAccount") == "52"); 

var condition = yourDataView.Cast<DataRowView>() 
          .Any(rv => rv.Row.Field<string>("GBA_Nbr_GBAccount") == "52"); 

Se la colonna è un numero intero, basta cambiare la Field<string> a Field<int> e confronta contro un intero, non una stringa

var condition = yourDataTable.AsEnumerable() 
          .Any(r => r.Field<int>("GBA_Nbr_GBAccount") == 52); 

var condition = yourDataView.Cast<DataRowView>() 
          .Any(rv => rv.Row.Field<int>("GBA_Nbr_GBAccount") == 52); 

applicazione Esempio di utilizzo colonna di stringa:

static void Main(string[] args) 
{ 
    DataSet dataset = new DataSet(); 
    dataset.Tables.Add(new DataTable("table1")); 
    dataset.Tables[0].Columns.Add(new DataColumn("Value", typeof(string))); 
    dataset.Tables[0].Rows.Add("10"); 
    dataset.Tables[0].Rows.Add("52"); 

    DataTable table = dataset.Tables[0]; 
    DataView view = table.DefaultView; 

    var condition1 = table.AsEnumerable().Any(r => r.Field<string>("Value") == "52"); 

    var condition2 = view.Cast<DataRowView>().Any(rv => rv.Row.Field<string>("Value") == "52"); 

    Console.WriteLine(String.Format("Result querying datatable: '{0}'. Result using dataview:'{1}'", condition1, condition2)); 
    Console.ReadLine(); 
} 

Se siete veramente utilizza una stringa per la colonna, verificare la presenza di spazi bianchi e applicare un assetto, se necessario.

1

Un modo per verificare l'esistenza di una colonna specifica in una dataview sarebbe simile al seguente:

if (dv.Table.Columns["Name"] != null) 
{ 
//Name column exists. Add Logic here 
} 
1

Utilizzare l'oggetto DataViewManager invece ha una proprietà DataSet ad esso associato e il set di dati ha tutte le normali caratteristiche del set di dati. Così, si può attraversare l'oggetto dataset.tables [index] ...

Speranza che aiuta

Esempio: dv.DataViewManager.DataSet.Tables[0].Rows[0][1]

Grazie, Sam

+0

Cosa succede se voglio l'ultima colonna della prima riga? – SearchForKnowledge

+0

se si vuole ottenere la colonna dal nome della colonna quindi utilizzare questo var value = dv.DataViewManager.DataSet.Tables[0].Rows[0]["ColumnName"]; O se si desidera ottenere l'ultima colonna della prima riga quindi utilizzare questo: int maxColumns = dv.DataViewManager.DataSet.Tables[0].Columns.Count; var value = dv.DataViewManager.DataSet.Tables[0].Rows[0][maxColumns - 1]; spero che sia in linea di quello che stavi chiedendo ... Grazie, – Sam

+0

Come menzionato nella documentazione, DataViews può essere creato senza DataViewManager e in tal caso DataViewManager è nullo. – Dono

Problemi correlati