Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除插入时的非唯一数据_C#_Database_Linq To Sql - Fatal编程技术网

C# 删除插入时的非唯一数据

C# 删除插入时的非唯一数据,c#,database,linq-to-sql,C#,Database,Linq To Sql,表实体列是唯一的,我正在尝试添加项。项目数量相当大,所以我试图避免多次连接到数据库。忽略重复项的最佳方法是什么 例如: 编辑:问题是word1的类型是nchar(50),所以在将其更改为nvarchar(50)后,一切都正常了。听起来您希望避免插入表中已经存在的单词 HashSet<string> words; List<string> newWords = words.Except(lh.words.Select(w=>w.word1))

表实体列是唯一的,我正在尝试添加项。项目数量相当大,所以我试图避免多次连接到数据库。忽略重复项的最佳方法是什么

例如:


编辑:问题是word1的类型是nchar(50),所以在将其更改为nvarchar(50)后,一切都正常了。

听起来您希望避免插入表中已经存在的单词

HashSet<string> words; 

List<string> newWords = words.Except(lh.words.Select(w=>w.word1))
                             .ToList();

lh.words.InsertAllOnSubmit(newWords.Select(x=> new word { word1 = x}));
HashSet单词;
列出newWords=words.Except(lh.words.Select(w=>w.word1))
.ToList();
InsertAllOnSubmit(newWords.Select(x=>newword{word1=x}));

您的代码,正如您今天所拥有的,将在同一批中一个接一个地发送所有
插入内容。它将使用您拥有的一个
SubmitChanges()
为它们创建一个连接。

您是否考虑过对大量记录使用hashset?问题是hashset将包含元素,已经在db中。HashSet中的元素已经小写了。