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

LINQ Statement in VB.Net - What is it doing?

我正在尝试了解此 LINQ 语句的实际作用。我没有使用 LINQ 的经验,所以我正在尝试获得某种程度的 "plain english" 翻译。

MyDataTable 包含以下数据: OrderByValues、合同、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

我不确定这里是否有足够的信息来帮助您。如果有任何帮助,我将不胜感激。

谢谢。

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

然后遍历结果集,并将 3 个值分别分配给变量 "a"、"b" 和 "c"。

第一行创建一个查询,其中包含 anonymous types. The query is not executed yet because of LINQ's deferred execution 的集合。这可以分解成几块:

  • From r In myds.MyDataTabler 定义为 IEnumerable 的单个元素(通常是数组或列表))myds.MyDataTable
  • Select OBV = r.Item("OrderByValues"), ... Distinct 创建一个匿名类型,其属性名为 OBVPTContract,并从元素 r.[= 中分配这些属性值35=]

foreach 循环实际执行查询并创建要迭代的 IEnumerable。然后在这个循环中,它重复设置 abc 到查询中定义的匿名类型的属性。这看起来有点奇怪,因为变量 abc 只会记住最后一次设置的值。

更多阅读 LINQ