Да, это нормально - у вас есть целая куча промежуточных артефактов сборки в вашей исходной папке.
Цель этих .gitignore
файлов, которые вы найдете в вашем исходном дереве, - сообщить git, какие файлы являются временными файлами сборки или другими файлами конфигурации, специфичными для вашего компьютера. Затем Git решает, какие файлы следует сохранить для потомков в системе контроля версий, а какие следует игнорировать.
Если вы не собираетесь использовать git, используйте файлы gitignore, чтобы увидеть, какие папки вы можете вручную исключить из вашего zip-файла. (Папка build
, вероятно, будет основным виновником.)
Вы посмотрели на оператор Linq Except?
Например:
var toDelete = (from t in TagsToPost
select t).Except(from nt in newList
select nt, new TagComparer());
class TagComparer: IEqualityComparer<TagsToPosts>
{
public bool Equals(TagsToPosts x, TagsToPosts y)
{
return x.Tag.Equals(y.Tag, CompareOptions.Ordinal);
}
}
You can't do this with LINQ-to-SQL.
LINQ-to-SQL is not good for batch operations - it can't do batch inserts, it can't do batch updates, and it can't do batch deletes. Every object in your collection is treated individually. You can do all the operations in one transaction, but there will always be a query for each record.
A better option is to write a stored procedure that will do what you want.
PLINQO поддерживает операции пакетного удаления без предварительного извлечения объектов.
var delete = from t в TagsToPost выберите t) .Except (из nt в newList выберите nt, new TagComparer ())
context.Tags.Delete (delete);