2014-11-09 42 views
0

我有列表,它會從SQL數據庫中的所有字段的選擇,並將其存儲在一個列表比較在類列表-VB

我有他們的文件ID的新下載文件的另一個列表。(文件編號是唯一的)

現在我想比較這兩個列表,以便只有當fileId不存在於數據庫中時,新下載的值纔會被保存到數據庫。文件ID 5在數據庫中存在,並且文件ID 5被再次下載窗口服務,它不會被保存在數據庫中,因此不會有相同文件ID的重複記錄。非常感謝你

從數據庫

 cmd1.Connection = con1 
    cmd1.CommandText = "select FileID from FileMaster" 
    drd1 = cmd1.ExecuteReader 
    If drd1.HasRows = True Then 
     Do While drd1.Read 
      Fledbobj.MessageID = drd1.Item("FileID") 
      List.Add(Filedbobj) 
     Loop 
    End If 

檢查添加的下載文件中列出

   For i = 1 To numfile 
       'adding 
       FileRecObj = New clsFileRec 

        FileRecOj .From = F.From 
        FileRecObj.FileDate = F.Date 

       End If 

       List.Add(FileRecObj) 
      Next i 

回答

0

可以使用LINQ查詢做到這一點。

創建一個包含所有的ID字符串列表: IDList

創建的下載文件的列表:

DownloadedList 

然後從LINQ查詢創建一個新的列表,像這樣:

Dim NoDupeList = (From X in DownloadedList where Not IDList.Contains(X.FileID)).ToList() 
+0

cmd1.CommandText =「select * from FileRecOj Where Not List.contains(Filedbobj))。ToList()」 drd1 = cmd1.ExecuteReader 如果drd1.HasRows = TRUE,則 的do while drd1.Read checkobj.FileID = drd1.Item( 「寫到FileID」) List.Add(checkFileobj) 循環 結束如果 – 2014-11-10 03:17:11

+0

我上面way.but試圖包含被表示錯誤 – 2014-11-10 03:17:58

+0

上面的代碼並不意味着使用CommandText來執行。它是LINQ的一部分,並使用該列表作爲數據源。在這裏看看更多的信息:http://msdn.microsoft.com/en-us/library/bb384667.aspx – mga911 2014-11-10 20:40:19