2010-01-19 7 views
0

J'ai un datatable avec une colonne contenant des GUID. Je veux sélectionner une ligne correspondant à un GUID spécifique. J'ai écrit le code suivant,DataTable.Select() - Comparaison des GUID

DataRow[] dRows = dtListSettings.Select("ListGUID = " + Convert.ToString(ViewState["GUID"])); 

Le GUID je compare est 500c2b6a-a3a7-457f-90ed-c96768d91520. Mais je reçois l'erreur - Erreur de syntaxe: Opérande manquant après l'opérateur 'c2b6a'.

Des idées?

Merci VSN

+0

Yah, ce @ozczecho dit. Sans les guillemets, vous créez une instruction select qui tente une opération mathématique (-). –

+0

Merci. Compris. – NLV

Répondre

6

Besoin d'une seule citation:

Quelque chose comme:

string.Format("ListGUID = '{0}'", Convert.ToString(ViewState["GUID"])); 
+0

Vous pouvez réellement ignorer le Convert.ToString puisque String.Format prend Object. – Josh

2

Essayez autour de votre sélection paramètre de l'instruction dans des guillemets simples, comme ceci:

DataRow[] dRows = dtListSettings.Select("ListGUID = '" + Convert.ToString(ViewState["GUID"]) + "'"); 
+0

A travaillé parfait. Je vous remercie. NLV – NLV

2

Cela ne fonctionne pas pour IN. Par exemple.

DataRow[] dRows = dtListSettings.Select("ListGUID IN ('" + Convert.ToString(ViewState["GUID"]) + "')"); 
0

je résoudre ceci avec deux méthodes ci-dessous:

DataTable dt = new DataTable(); // your datatable with data 
Guid gid = Guid.NewGuid(); // searching guid 
DataRow[] dra = dt.Select("GuidColumn = '" + gid.ToString() + "'") 
// OR 
DataRow[] dra = dt.Select("GuidColumn = Convert('" + gid.ToString() + "', 'System.Guid')"); 

espoir est utile;)