2012-03-30 9 views
21

Tengo una tabla de datos con dos columnas,Consulta Datatable con el lugar donde la condición

Column 1 = "EmpID" 
Column 2 = "EmpName" 

Quiero consultar la tabla de datos, contra la columna EmpID y Empname.

Por ejemplo, quiero obtener los valores donde

(EmpName != 'abc' or EmpName != 'xyz') and (EmpID = 5) 
+0

@QQping, no pude hacerlo. Ni idea. Acabo de empezar a consultar en datatable – Anuya

Respuesta

29

Algo como esto ...

var res = from row in myDTable.AsEnumerable() 
where row.Field<int>("EmpID") == 5 && 
(row.Field<string>("EmpName") != "abc" || 
row.Field<string>("EmpName") != "xyz") 
select row; 

Ver también LINQ query on a DataTable

+0

missied out, ¿cómo puedo obtener el conteo de la cantidad de filas devueltas? Gracias – Anuya

+1

@Anuya - res.Count? – Bridge

+0

lo siento, no pude. Obtengo este error cuando convierto res.count a Int ... {"Cast especificado no es válido."} {System.SystemException {System.InvalidCastException} – Anuya

10

algo como esto? :

DataTable dt = ... 
DataView dv = new DataView(dt); 
dv.RowFilter = "(EmpName != 'abc' or EmpName != 'xyz') and (EmpID = 5)" 

¿Es lo que estás buscando?

15

Puede hacerlo con LINQ, como Mamoo mostró, pero el oldies también están bien:

var filteredDataTable = dt.Select(@"EmpId > 2 
    AND (EmpName <> 'abc' OR EmpName <> 'xyz') 
    AND EmpName like '%il%'"); 
+0

Perdona mi curiosidad, pero ¿para qué sirve 'EmpId> 2'? –

+0

@AnarKhalilov Son solo algunos ejemplos de la sintaxis. El 'me gusta' tampoco se pidió. –

Cuestiones relacionadas