1.I have a generic List(OfContent) which represents all the content available for the user.
2.I have as well for each user an array of string which contains all the Content Ids that are already sent to the user.(The array is string because it is generated from a string.split method.)
Ex:Content Class
Public Class Content
Public Property ContentId As Integer
Public Property ContentType As Integer
Public Property ContentToSend As String
Public Property Lang As Integer
Public Property EncryptedContentId As String
Public Sub New()
Me.ContentId = 0
Me.ContentType = 0
Me.ContentToSend = String.Empty
Me.Lang = 0
Me.EncryptedContentId = String.Empty
End Sub
End Class
the string array that I have for ex:
Dim contentSent() As String = {"1", "3", "4", "9", "7"}
the elements 1,3,4.... in the above array represents logically the ContentId
in my content Class
.
my question is that what is the best way to filter out the contents of the array from the list(Of Content) that i have.
P.s I Am not limited with the choice of Generic-list i can use a data table instead if that helps with the performance. Currently we are having performance issues as I am using indexof() then remove at to filter out the contents.
some of the ways i have seen is - 1.Linq with lists - 2.linq with datatable
Update: This is the code i am using currently
Public Sub SendContent()
Dim contentCollection As New List(Of Content)
Dim SubscriberCollection As New List(Of Subscriber)
'Fills the list Of Content
contentCollection = CContent.GetRandomContentNotscheduled(MT, ClientId, SQLConnection_Cont)
'Gets a List(Of Subscribers) which contains the Subscribers that the content should be sent to.
SubscriberCollection = CContent.GetSubscribersContent(ClientId, MT, False, SQLConnection_Cont)
For i As Integer = 0 To SubscriberCollection.Count - 1
Dim index As Integer = 0
Dim ContentSent() As String = SubscriberCollection.ContentIdSent.Split(",")
For j As Integer = 0 To ContentSent.Length - 1 Step 1
Dim cntId As Integer = Convert.ToInt32(ContentSent(j))
index = contentCollection.FindIndex(Function(c) c.CntId = cntId)
contentCollection.RemoveAt(index)
Next
Next
End Sub
I think logically maybe you are looking for something like this...
VB.NET
C#
results