我说过我有这门课
Public Class People
Public Property kids As List(Of String)
Public Property first As String
Public Property last As String
Public Property age as Integer
End Class
Dim test As List(Of People) = PeopleList.Where(
Function(p)
Return p.first = sometextbox.text
End Function
).ToList()
我知道我可以在各个属性中搜索如上所述的匹配项。 但我如何搜索每个属性以寻找潜在的匹配项。因此,假设第一个不匹配,但最后一个匹配,或者字符串列表与文本框匹配。我知道我可以使用 Or...Or..Or.. 来检查每个属性,但我的类要大得多并且需要可扩展。即:我不想为将来的每个新属性添加 OR 行。这可能吗?
'I have tried something like the below but feel like it is heading towards a dead end
Dim properties As PropertyInfo() = GetType(People).GetProperties()
for each prop in Propepreties
prop.getvalue()
底线我想过滤对象列表并返回一个列表,其中包含任何属性与搜索条件匹配的所有对象,而不是仅检查一个属性。 让我知道你的想法
您将无法摆脱混乱的 if/else 或 switch 语句。虽然您可以使用反射来获取该类型的属性集合,甚至读取它们的值,但您仍然需要手动检查结果的类型以了解执行诸如下降到
kids
列表或获取字符串表示形式之类的操作age
。
如果是我,我会在
bool IsMatch(string)
类型中添加 People
方法,或者在自己的类型中添加 bool IsMatch(People, string)
方法,以解决更多问题。