2017-02-16 1 views
0

Ich weiß, wie in C# filtern oder wählen Sie aus Datentabelle wie folgt. (Wenn der Datentyp der Spalte eine Zeichenfolge ist). Wie folgtDatatable wählen Länge der Zeile Wert für Doppel

Bool ReturnValue = DataTable.Select("LEN([" + ColumnName + "]) > 5").any(); 

Above-Code, wenn eine der Zeilen mit Wert hat eine Länge von mehr als 50 Zeichen, dann wird es Ausgabe geben, wie wahr.

Ich möchte etwas wie oben mit Doppeltyp tun. Hier habe ich die Spalte "columnName", die einen doppelten Datentyp hat. In diesem Fall gibt der obige Code einen Fehler.

Syntaxfehler in Aggregat Argument: In Erwartung einer einzigen Spalte Argument mit möglichen 'Child' Qualifier.

Da LEN() nicht für den Doppeltyp anwendbar ist. Wer weiß, wie man das gleiche für die doppelte Datentypspalte tut. Z.B.

Correct: "abcdef" 
Error: "123456" 

Da erste ist der String-Typ und LEN() ist es anwendbar, aber für die zweite Fall nicht anwendbar. Da alle Zahlen dort sind, ist der Datentyp der Spalte in Datentabelle Double oder Int32 und LEN() funktioniert nicht dort.

Pls helfen Dank

+0

Was meinst du mit "Länge" von Doppel? –

+0

Sie müssen Double in String konvertieren, um die Länge zu erhalten. – jdweng

+0

@jdweng Wie? Kannst du ein Beispiel geben? – Maharshi

Antwort

0

Sie LINQ to DataSet verwenden können:

DataTable.AsEnumerable().Any(r => r.Field<double>(ColumnName).ToString().Length > 5) 

Aber Berechnung 'Länge' der Doppel ist sehr seltsam. Z.B. 10 haben Länge gleich 2, aber 1.2345 wird Länge gleich 6 haben

+0

Ich habe es versucht, aber ich habe über 50 Lac-Aufzeichnungen und AsEnumerable ist sehr viel Zeit und es Zeit out Session. Also kann ich es nicht benutzen. Vielen Dank. jede andere Lösung – Maharshi

+1

@Maharshi 1) klären, warum müssen Sie überprüfen, "Länge" von Doppel 2) Wenn Sie viele Daten weder DataTable noch LINQ ist eine gute Option. Weil beide erfordern, alle Daten in den Speicher zu ziehen. Sie sollten Verifizierungen auf Serverseite –

+0

Ich habe nvarchar (50) in der Tabellenstruktur. Weil ich NONCLUSTERED INDEX für diese Spalte hinzufügen muss, kann ich sie nicht auf nvarchar (max) setzen. So kann es nicht von der Server-Seite tun – Maharshi