Asp.net DataTable.Select(“ColumnName IN”)Guid错误
我在使用DataTable行时遇到了问题,我的想法是,我想从一系列行中拉出任何列值位于一组GUID中的行。但是,我从select函数中得到一个guid/字符串比较错误 代码如下:Asp.net DataTable.Select(“ColumnName IN”)Guid错误,asp.net,string,datatable,guid,datatable.select,Asp.net,String,Datatable,Guid,Datatable.select,我在使用DataTable行时遇到了问题,我的想法是,我想从一系列行中拉出任何列值位于一组GUID中的行。但是,我从select函数中得到一个guid/字符串比较错误 代码如下: Dim sb As New StringBuilder For Each Row As DataRow In dtData.Rows sb.Append("'") sb.Append(Row("SomeField").ToString) sb.Append("', ") Next gvDat
Dim sb As New StringBuilder
For Each Row As DataRow In dtData.Rows
sb.Append("'")
sb.Append(Row("SomeField").ToString)
sb.Append("', ")
Next
gvDataView.DataSource = dtSubData.Select("SomeField IN (" & sb.ToString.TrimEnd(", ".ToCharArray) & ")")
但是,由于SomeField是uniqueidentifier列,dtSubData.select引发了一个有关Guid和字符串比较的错误。考虑到这一点,有什么方法可以解决这个问题吗?如果您可以使用.NET 3.5和System.Data.DataSetExtensions.dll,您可能可以在这里利用LINQ。首先,我将用dtData中的值填充哈希集
var items = from row in dtData.AsEnumerable()
select row.Field<Guid>("SomeField");
var validValues = new HashSet<Guid>(items);
很抱歉使用C语言,但是我的VB LINQ语法有点不稳定。无论如何,一旦您有了一个有效id的哈希集,您就可以有效地测试第二个DataTable中的数据是否包含在该集中:
gvDataView.DataSource = from row in dtSubData.AsEnumerable()
where validValues.Contains(row.Field<Guid>("SomeField"))
select row;