示例场景
我在数据库中有一个表,其中包含以下字段:- SerialNo,GroupNo,Description,Quantity。目前,我正在围绕一个从 ADO.NET 数据集填充的 DataTable 循环,并将字段添加到列表中,如下所示...
' Gets the items from the database and created a DataSet
' The DataSet has a named DataTable called MyTable
ds = GetItems
' Item is an model in my MVC project
Dim Item As Item
' I am creating a List of items...
i As List(Of Item)
For Each row As DataRow In ds.Tables("MyTable").Rows
Item = New Item() With {
.SerialNo = If(Not IsDBNull(row("SerialNo")), CInt(row("SerialNo")), 0),
.GroupNo = If(Not IsDBNull(row("GroupNo")), CStr(row("GroupNo")), ""),
.Description = If(Not IsDBNull(row("Description")), CStr(row("Description")), ""),
.Quantity = If(Not IsDBNull(row("Quantity")), CInt(row("Quantity")), 0)
}
ai.Add(Item)
Next
要求
而不是获取每一行,我只想获取每个 GroupNo 的第一次出现并将此结果返回到列表中。例如...
- 序列号 = 1 组号 = 1 描述 = 项目 A 数量 = 100
- SerialNo = 2 GroupNo = 1 描述 = 项目 B 数量 = 100
- SerialNo = 3 GroupNo = 1 描述 = 项目 C 数量 = 100
- 序列号 = 4 组号 = 2 描述 = 项目 D 数量 = 100
- 序列号 = 5 组号 = 2 描述 = 项目 E 数量 = 100
- SerialNo = 6 GroupNo = 3 描述 = 项目 F 数量 = 100
...实际上应该修改为返回...
- 序列号 = 1 组号 = 1 描述 = 项目 A 数量 = 100
- 序列号 = 4 组号 = 2 描述 = 项目 D 数量 = 100
- SerialNo = 6 GroupNo = 3 描述 = 项目 F 数量 = 100
我正在使用带有 .NET 4.0 的 Visual Studio 2010 (VB.NET)。
我试图研究各种方法,但我要么卡住试图提取所有 4 列似乎没有正确分组。注意:我不想将查询修改为只返回数据子集。我需要用代码过滤/分组它。