计数列表中对象属性的重复项
问题描述:
我花了整个下午都在寻找这个答案,但没有任何运气。计数列表中对象属性的重复项
我有一个对象声明,并且它有一些属性。例如
Public Class myObject
Private _prop1 As String
Private _prop2 As String
Private _prop3 As String
Private _prop4 As String
Public Sub New(ByVal val1 As String _
, ByVal val2 As String _
, ByVal val3 As String _
, ByVal val4 As String)
_prop1 = val1
_prop2 = val2
_prop3 = val3
_prop4 = val4
End Sub
Public Property Prop1() As String
Get
Return _prop1
End Get
Set(ByVal value As String)
_prop1 = value
End Set
End Property
Public Property Prop2() As String
Get
Return _prop2
End Get
Set(ByVal value As String)
_prop2 = value
End Set
End Property
Public Property Prop3() As String
Get
Return _prop3
End Get
Set(ByVal value As String)
_prop3 = value
End Set
End Property
Public Property Prop4() As String
Get
Return _prop4
End Get
Set(ByVal value As String)
_prop4 = value
End Set
End Property
End Class
在我的代码,我有这些对象的列表:
Dim myList as List(of myObject)
我然后填充列表...
{的要求,这是一个有点像这样,即使填充它的方法是不相关的:-)}
Dim myFile as String = readFile(myFilename)
Dim fileLines() as String = Split(myFile,vbCrLf)
Dim splitLine() as String
For each line in fileLines
splitLine = Split(line,"|")
myList.add(new myObject(splitLine(0),splitLine(1),splitLine(2),splitLine(3))
Next
我需要的是一个列表,其中所有PROP1值是唯一的,所以我想能够识别任何重复的值myList.Prop1
我试过Finding Duplicates based On A Property In Object但这似乎并不违法任何东西。
我故意创建了一个已知副本的列表。使用来自上述问题的适应代码...
Dim duplicates = myList.GroupBy(Function(i) i.Prop1) _
.Where(Function(x) x.Count() > 1) _
.[Select](Function(x) x)
...结果重复是“没有”,即使有一个。
在这个阶段,我不需要识别重复,只是他们在那里的事实。但是,如果是简单的将这一功能比我想在添加此
答
这是相当简单的把所有重复的对象,来看看这个例子:
Dim myList as List(Of myObject) = New List(Of myObject)
'Add arbitrary values (demo only)
myList.AddRange({New myObject("A", "B", "C", "D"), New myObject("A", "C", "D", "E"), New myObject("B", "C", "D", "E"), New myObject("C", "D", "E", "F")})
'Get all objects where Prop1 is the same
Dim duplicateProp1 = (From o As myObject in myList Group By Prop1 = o.Prop1 Into g = Group Where g.Count > 1 Select g.FirstOrDefault())
'Print all the duplicate objects (demo only)
For Each d As myObject In duplicateProp1
Console.WriteLine(d.Prop1)
Next
小提琴:Live Demo
+0
嗨大卫。谢谢你。作品一种享受! – Tym
你可以分享填充对象的代码吗? – dotNET
重复查询代码工作正常 - 它返回具有相同属性值的项目集合 – Plutonix