【发布时间】:2018-09-26 08:11:22
【问题描述】:
我正在使用 sql server 数据库在 vb.net windows forms 应用程序中构建一个简单的搜索工具, 用户将输入一个唯一的 ID,并会看到显示状态的结果。
对象类:
Public Class IStatus
Public Property Id As String
Public Property Status As String
Public Sub New(ByVal Id As String, ByVal Status As String)
Id = Id
Status = Status
End Sub
End Class
我正在做的是在 List(Of IStatus) 中填充数据库中的行 现在我想使用 linq 从数据表中过滤行,到目前为止我已经完成了以下操作:
Public Function GetDS() As List(Of IStatus)
Dim sRows As New List(Of IStatus)
Dim dr As SqlDataReader = GetDataReader()
If dr.HasRows Then
Using dt As New DataTable
dt.Load(dr)
totRows = dt.Rows.Count
If (totRows > 1) Then
For Each drow As DataRow In dt.Rows
Dim sRow As New IStatus(drow(0).ToString(), drow(1).ToString())
sRows.Add(sRow)
Next
'Trying to filter the data with linq conditions here ...
Dim uniqRows = sRows.Where(Function(p) p.Status = "Open" Or p.Status = "Closed" Or p.Status = "Unknown").ToList
sRows = uniqRows.ToList
Else
Dim sRow As New IStatus(dt.Rows(0)(0).ToString, dt.Rows(0)(1).ToString)
sRows.Add(sRow)
End If
Return sRows
End Using
End If
End Function
我有以下对象的列表:
IStatus
-----------
Id
Status
以下是我希望实现的示例数据和过滤:
例如数据:
-----------------
Id Status
-----------------
1 Open
1 Open
1 Closed
返回所有行,因为其中一个状态值不同。
Id Status
-----------------
1 Open
1 Open
1 Open
只返回第一行,因为所有状态值都相同。
Id Status
-----------------
1 Unknown
1 Open
1 Open
如果任一状态为未知,则返回未知行。
谢谢。
【问题讨论】:
-
你的问题是什么?你试图解决这个问题是什么?我们不在这里做你的工作。除此之外:为什么 tga 还专门针对带有 C# 的 VB.NET 提出一个问题?
-
为什么所有东西的 ID 都是 1,我很难理解这一点,也发布你的代码
-
同时选择一种语言并从标签中删除您不使用的语言
-
嗨,我是 linq 新手,也想在 c# 中学习相同的内容。所以我标记了 vb.net 和 c#
-
这看起来像是你的家庭作业。这可能还不错,只是我们在这里不这样做。我们帮助有具体问题的人他们有同时解决他们的问题。所以试一试,如果它没有按预期工作,请向我们提供minimal reproducible example 和清晰的问题描述。如果您不知道如何开始,那么您需要找到一本好书或教程,这种帮助太广泛了,无法在此处发布。
标签: .net vb.net linq linq-to-objects