2012-03-30 7 views
21

Ich habe eine Datentabelle mit zwei Spalten,Querying Datentabelle mit dem Zustand

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

Ich mag die Datentabelle abzufragen, gegen die Säule EmpID und Empname.

Zum Beispiel möchte ich die Werte erhalten, wo

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

@QQping, ich konnte es tun. Keine Ahnung. Just in datatable – Anuya

Antwort

29

So etwas ...

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; 

auch LINQ query on a DataTable

+0

missy out gestartet, wie bekomme ich die Anzahl der Anzahl der Zeilen zurückgegeben. Danke – Anuya

+1

@Anuya - res.Count? – Bridge

+0

Entschuldigung, ich könnte nicht. Ich erhalte diesen Fehler, wenn ich res.count in Int umwandle ... {"Angegebener Cast ist nicht gültig."} {System.SystemException {System.InvalidCastException} – Anuya

10

so etwas wie dies sehen? :

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

Ist es das, wonach Sie suchen?

15

Sie es mit Linq tun, als Mamoo zeigte, aber die oldies sind auch gut:

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

Verzeihen Sie meine Neugier, aber was ist 'EmpId> 2' für? –

+0

@AnarKhalilov Es sind nur ein paar Beispiele für die Syntax. Das "Gleiches" wurde auch nicht gefragt. –

Verwandte Themen