2010-01-19 131 views
0

我有一个包含GUID的列的数据表。我想选择一个匹配特定GUID的行。我写了下面的代码,DataTable.Select() - 比较GUID

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

我正在比较GUID是500c2b6a-a3a7-457f-90ed-c96768d91520。但是我收到错误 - 语法错误:'c2b6a'操作符后缺少操作数。

有什么建议吗?

谢谢 NLV

+0

严,什么@ozczecho说。没有引号,你正在创建一个正在尝试数学运算( - )的select语句。 – 2010-01-19 05:31:21

+0

谢谢。了解。 – NLV 2010-01-19 06:02:00

回答

6

需要一个单引号:

喜欢的东西:

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

因为String.Format需要Object,所以实际上可以跳过Convert.ToString。 – Josh 2010-01-19 05:32:26

2

尝试围绕你的SELECT语句的参数在单引号,像这样:

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

工作完美。谢谢。 NLV – NLV 2010-01-19 05:36:38

2

这不适用于IN。例如。

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

我有两个波纹管的方法解决此问题:

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')"); 

希望是有用的;)