2014-11-09 35 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