首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTable.Select("ColumnName IN ") Guid错误

DataTable.Select("ColumnName IN ") Guid错误
EN

Stack Overflow用户
提问于 2009-06-26 22:20:19
回答 1查看 2.3K关注 0票数 0

我遇到了DataTable行的问题,我的想法是从一系列行中拉出列值之一在一组guids中的任何行。但是,我从select()函数得到了一个guid /字符串比较错误。

代码如下:

代码语言:javascript
复制
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和字符串比较的错误。考虑到这一点,我有什么方法可以解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-26 22:44:02

如果你可以使用LINQ3.5和System.Data.DataSetExtensions.dll,你也许可以在这里利用.NET。首先,我用来自dtData的值填充一个HashSet。

代码语言:javascript
复制
var items = from row in dtData.AsEnumerable()
            select row.Field<Guid>("SomeField");
var validValues = new HashSet<Guid>(items);

很抱歉我的C#,但我的VB LINQ语法有点不稳定。无论如何,一旦您有了有效id的HashSet,您就可以有效地测试来自第二个DataTable的数据是否包含在该集合中:

代码语言:javascript
复制
gvDataView.DataSource = from row in dtSubData.AsEnumerable()
                        where validValues.Contains(row.Field<Guid>("SomeField"))
                        select row;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1051526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档