vb.net - 如何从数据表中选择所有记录仅以一列不同
问题描述
我有一个这样的数据表
invoice_number invoice_date customer_name item_name
1 14/01/2019 Mr.A Item1
2 15/01/2019 Mr.B Item1
3 15/01/2019 Mr.C Item2
1 15/01/2019 Mr.A Item2
2 20/01/2019 Mr.B Item5
我想要的是
我想将除“item_name”之外的所有列插入到 ListView。我的标准是'invoice_number' 必须是唯一的。其他列中的数据类型无关紧要。它应该在 ListView 中看起来像这样。基本上,抓住第一次出现并忽略其余的。
invoice_number invoice_date customer_name
1 14/01/2019 Mr.A
2 15/01/2019 Mr.B
3 15/01/2019 Mr.C
到目前为止我尝试过的
Dim temp = (From p In Invoice_printing.Tables("inv_for_print").AsEnumerable()
Select New With {.inv_number = p.Field(Of String)("invoice_number"),
.inv_date = p.Field(Of Date)("invoice_date"),
.ol_name = p.Field(Of String)("ol_name")}).ToList()
Dim inv_selected_date = temp.GroupBy(Function(x) New With {Key x.inv_number, Key x.inv_date, Key x.ol_name}).ToList()
For Each inv In inv_selected_date
Dim newItem As New ListViewItem(inv.Key.inv_number)
newItem.SubItems.Add(inv.Key.ol_name)
newItem.SubItems.Add(CType(inv.Key.inv_date, String))
lv_inv_list.Items.Add(newItem)
Next
它有效,但由于重复日期,发票编号 1 和 2 在 ListView 中出现两次。我应该怎么办?我的 Linq 知识非常有限。除了将数据放入多维数组,运行嵌套循环并删除重复的条目之外,我想不出任何其他方法。
解决方案
在您的问题下查看我的评论。如果我对您的理解正确,那么我认为这就是您想要的:
var inv_selected_date = temp.GroupBy(i => i.invoice_number).Select(iv => iv.First()).ToList();
推荐阅读
- java - 使用 Intents 的 SonyLiv 和 Diseny + Hotstar Android 应用程序的深层链接
- git - 从特定分支执行 git pull 后无法推送
- javascript - 从数组中提取包含某些字母的字符串
- angular - 如何从 JsonObject 获取特定值?
- python-3.x - 在python中导入每日变化的变量名
- python - Tweepy 地理位置搜索不返回结果
- javascript - 使用 react、axios 和 django,我正在尝试将数据从客户端发送到我的服务器,但我无法获取数据
- android - Android UI 自动化测试 WebView perform(webKeys("mockString")) 不起作用
- python - 拆分数据时在 TensorFlow 中使用 map 函数
- javascript - 使用实例作为 VueJS 数据