我试图了解这个LINQ语句实际上在做什么。我没有LINQ的经验,所以我想尝试一些“普通英语”翻译。
MyDataTable包含以下数据: OrderByValues,Contract,PayType,PayAmount
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
我不确定这里是否有足够的信息来帮助你。我很感激任何帮助。
感谢。
答案 0 :(得分:0)
它从数据表中选择所有“OrderByValues”,“PayType”和“Contract”列,忽略重复的行。
然后迭代结果集,并分别将3个值分配给变量“a”,“b”和“c”。
答案 1 :(得分:0)
第一行创建一个包含anonymous types集合的查询。由于LINQ's deferred execution,查询尚未执行。这可以细分为:
From r In myds.MyDataTable
将r
定义为IEnumerable的单个元素(通常是数组或列表))myds.MyDataTable
Select OBV = r.Item("OrderByValues"), ... Distinct
创建一个匿名类型,其中包含名为OBV
,PT
,Contract
的属性,并从元素r
中分配这些属性值。 foreach循环实际执行查询并创建IEnumerable以进行迭代。然后在此循环中,它会重复地将a
,b
,c
设置为查询中定义的匿名类型的属性。这看起来有点奇怪,因为变量a
,b
,c
只会记住为它们设置的最后一个值。
更多阅读LINQ。