我遇到了DataTable行的问题,我的想法是从一系列行中拉出列值之一在一组guids中的任何行。但是,我从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
gvDataView.DataSource = dtSubData.Select("SomeField IN (" & sb.ToString.TrimEnd(", ".ToCharArray) & ")")然而,由于SomeField是一个唯一标识符列,dtSubData.select抛出了一个关于Guid和字符串比较的错误。考虑到这一点,我有什么方法可以解决这个问题吗?
发布于 2009-06-26 22:44:02
如果你可以使用LINQ3.5和System.Data.DataSetExtensions.dll,你也许可以在这里利用.NET。首先,我用来自dtData的值填充一个HashSet。
var items = from row in dtData.AsEnumerable()
select row.Field<Guid>("SomeField");
var validValues = new HashSet<Guid>(items);很抱歉我的C#,但我的VB LINQ语法有点不稳定。无论如何,一旦您有了有效id的HashSet,您就可以有效地测试来自第二个DataTable的数据是否包含在该集合中:
gvDataView.DataSource = from row in dtSubData.AsEnumerable()
where validValues.Contains(row.Field<Guid>("SomeField"))
select row;https://stackoverflow.com/questions/1051526
复制相似问题