Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.Net中的LINQ语句-它在做什么?_Vb.net_Linq_For Loop - Fatal编程技术网

VB.Net中的LINQ语句-它在做什么?

VB.Net中的LINQ语句-它在做什么?,vb.net,linq,for-loop,Vb.net,Linq,For Loop,我正在努力理解LINQ的声明到底在做什么。我没有LINQ方面的经验,所以我正试图获得一些简单的英语翻译 MyDataTable包含以下数据: OrderByValues、合同、付款类型、付款金额 Dim groupIDs = From r In myds.MyDataTable Select OBV = r.Item("OrderByValues"), PT = r.Item("PayType"), Contract = r("Contract") Distinct For Each r in

我正在努力理解LINQ的声明到底在做什么。我没有LINQ方面的经验,所以我正试图获得一些简单的英语翻译

MyDataTable包含以下数据: OrderByValues、合同、付款类型、付款金额

Dim groupIDs = From r In myds.MyDataTable Select OBV = r.Item("OrderByValues"), PT = r.Item("PayType"), Contract = r("Contract") Distinct
For Each r in groupIDS
   a = r.OBV
   b = r.PT
   c = r.Contract
Next
我不确定这里是否有足够的信息来帮助你。我非常感谢你的帮助


谢谢。

它从数据表中选择所有OrderByValues、PayType和Contract列,忽略重复的行


然后,它在结果集上迭代,并将这3个值分别赋给变量a、b和c。

第一行创建了一个查询,该查询将保存一个变量的集合。查询尚未执行,原因是。这可以分为几部分:

myds.MyDataTable中的From r将r定义为IEnumerable数组或列表myds.MyDataTable的单个元素 选择OBV=r.ItemOrderByValues。。。Distinct使用名为OBV、PT、Contract的属性创建匿名类型,并从元素r中分配这些属性值。 foreach循环实际上执行查询并创建IEnumerable进行迭代。然后在这个循环中,它重复地将a、b、c设置为查询中定义的匿名类型的属性。这看起来确实有点奇怪,因为变量a、b、c只会记住最后设置给它们的值


更多阅读。

linq语句在哪里?从基本知识开始,使用MSDN文档…PT=r.ItemPayType与PT=rPayType相同吗?@SimpleMan在VB中,是的。Item是默认的索引器,VB允许您省略它,因此rPayType实际上被编译为r.ItemPayType。代码中还有更多内容,为了简单起见,我只去掉了一堆。感谢所有评论的人。