。选择返回错误的长度

时间:2016-01-17 12:19:24

标签: vb.net linq

我试图检查我的data记录的字段DataTable是否设置为' 0'或者' 1'。
我的所有本地记录都保存到local_ds DataTable中。现在,我要检查的记录是这样的:
21a956af-f304-4c72-97cf-1ef08e8719fc 为了更好的愿景我在这里粘贴我的表格的内容(这也是我的DataTable local_ds的内容):

enter image description here

如何查看我要检查的记录,将字段data设置为0.现在我通过以下代码执行研究:

Dim local_data = local_ds.Tables(0).Select(String.Format("GUID = '{0}'", "21a956af-f304-4c72-97cf-1ef08e8719fc"), String.Format("data", 1))

上面的代码使用LINQ来获取结果,无论如何,我将GUID字段传递给搜索,将字段数据传递为1。此代码应该返回local_data.length等于0,但是,返回1,这是错误的,因为我只想检查字段data是0还是1.在此示例中结果应该是local_data.length = 0'因为LINQ查询我明确指出要查找包含GUID = xdata = 1的记录。
我已经知道数据库中存在此记录,local_data变量必须帮助我识别data字段具有哪种类型的值。
那么,我做错了什么?

1 个答案:

答案 0 :(得分:2)

不,在上面的代码中,您没有使用LINQ。

DataTable.Select是从1.1版本的.NET Framework开始可用的方法,并且存在in four possible overloads

您正在使用的是作为第一个参数的WHERE条件,以及作为第二个参数的SORT顺序。所以你并没有真正传递条件WHERE .... AND Data = 1,但是Data=1它被解释为某种排序顺序。

WHERE参数的正确字符串应为

Dim where as String = String.Format("GUID = '{0}' AND Data = {1}", _
          "21a956af-f304-4c72-97cf-1ef08e8719fc", 1)
Dim local_data = local_ds.Tables(0).Select(where)
相关问题