DataTable.Select() - 比较GUID

时间:2010-01-19 05:22:30

标签: c# datatable

我有一个包含GUID的列的数据表。我想选择一个匹配特定GUID的行。我写了以下代码,

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

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

有什么想法吗?

谢谢 NLV

4 个答案:

答案 0 :(得分:6)

需要单引号:

类似的东西:

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

答案 1 :(得分:2)

尝试用单引号括住select语句参数,如下所示:

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

答案 2 :(得分:2)

这不适用于IN。例如。

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

答案 3 :(得分: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')");

希望有用;)