随笔10. 代码解析

53 阅读1分钟
Dim list = grdList.Rows.OfType(Of DataGridViewRow) _ .Where(Function(x) Convert.ToString(x.Cells(Grd_SeihinCd.Index).Value) = productCode AndAlso _ Convert.ToDecimal(x.Cells(Grd_LotNo.Index).Value) = lotNo)

在这段代码中,使用了 LINQ(语言集成查询)和 Lambda 表达式来筛选数据。以下是相关技术的基本语法和概述:

1. LINQ

基本语法:

vb.net
コードをコピーする
Dim result = collection.Where(Function(item) condition)
  • collection: 要查询的集合(如数组、列表、DataGridView.Rows 等)。
  • Where: LINQ 方法,用于筛选集合中的元素。
  • Function(item): 定义了一个 Lambda 表达式,item 是集合中的每个元素。
  • condition: 用于判断每个元素是否满足的条件。

2. Lambda 表达式

基本语法:

vb.net
コードをコピーする
Function(parameter) expression
  • parameter: 输入参数,可以是单个参数或多个参数。
  • expression: 该参数的处理逻辑,通常是返回布尔值或值的表达式。

3. OfType 方法

基本语法:

vb.net
コードをコピーする
collection.OfType(Of T)()
  • T: 目标类型,筛选出指定类型的元素。

示例

结合这些技术,下面是一个简单的示例:

vb.net
コードをコピーする
Dim numbers = New List(Of Integer) From {1, 2, 3, 4, 5}
Dim evenNumbers = numbers.Where(Function(n) n Mod 2 = 0)

For Each num In evenNumbers
    Console.WriteLine(num) ' 输出: 2, 4
Next

在这个示例中,numbers 列表中通过 Where 筛选出所有偶数,并存储在 evenNumbers 中。

总结

在你的代码中,LINQ 用于从 DataGridView 的行中筛选出符合特定条件的行,结合了 OfTypeWhere 方法,以及 Lambda 表达式,以便于高效和可读地处理数据。