这段代码是用来从一个 DataGridView 的行中筛选出满足特定条件的行,并将这些行存储在一个集合中。让我们逐步解析这段代码。
代码解析
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)
1. Dim list =
- 这行代码声明了一个变量
list,用于存储筛选后的结果。
2. grdList.Rows
grdList是一个DataGridView控件,Rows属性返回一个包含所有行的集合。
3. OfType(Of DataGridViewRow)
OfType是 LINQ 的一个扩展方法,用于筛选集合中指定类型的元素。在这里,它用于确保Rows集合中的每个元素都是DataGridViewRow类型。
4. .Where(Function(x) ...)
Where是 LINQ 中的一个方法,用于根据指定的条件筛选集合中的元素。Function(x)定义了一个匿名函数,x代表DataGridViewRow类型的每一行。
5. Convert.ToString(x.Cells(Grd_SeihinCd.Index).Value)
x.Cells(Grd_SeihinCd.Index).Value获取当前行中,索引为Grd_SeihinCd的单元格的值。Convert.ToString(...)将这个值转换为字符串。
6. = productCode
- 这部分检查单元格的字符串值是否等于变量
productCode。
7. AndAlso
AndAlso是逻辑与操作符,用于在两个条件都为True时返回True。它的短路特性意味着如果第一个条件为False,则不会计算第二个条件。
8. Convert.ToDecimal(x.Cells(Grd_LotNo.Index).Value)
Convert.ToDecimal(...)将当前行中,索引为Grd_LotNo的单元格的值转换为十进制数。
9. = lotNo
- 这部分检查单元格的十进制值是否等于变量
lotNo。
总结
整段代码的作用是: 从 grdList 的所有行中筛选出那些满足以下条件的行:
- 该行的
Grd_SeihinCd单元格的值与productCode相等。 - 该行的
Grd_LotNo单元格的值与lotNo相等。
最终,符合条件的行会被存储在 list 变量中。list 的类型为 IEnumerable(Of DataGridViewRow),可以进一步处理或遍历。