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 的行中筛选出符合特定条件的行,结合了 OfType 和 Where 方法,以及 Lambda 表达式,以便于高效和可读地处理数据。