private void FindImportEntityDuplicate(EntitySchemaQuery esq, List <Entity> entities, ImportParameters parameters, IEnumerable <ImportColumn> keyColumns, Func <ColumnExpression, object> columnValueAction) { var mainFilterGroup = new EntitySchemaQueryFilterCollection(esq, LogicalOperationStrict.Or); esq.Filters.Add(mainFilterGroup); var importColumns = keyColumns.ToList(); var keyColumnsCount = importColumns.Count(); foreach (var importEntity in parameters.Entities) { var columnsExpressions = GetKeyColumnsValues(parameters, importEntity, importColumns); if (!columnsExpressions.Any()) { continue; } var filters = GetKeyColumnsFilters(esq, columnsExpressions, columnValueAction); mainFilterGroup.Add(filters); var parametersCount = mainFilterGroup.Count * keyColumnsCount; if (parametersCount >= MaxQueryParametersCount) { AddEntitiesRange(esq, entities); esq.ResetSelectQuery(); mainFilterGroup.Clear(); } } if (mainFilterGroup.Any()) { AddEntitiesRange(esq, entities); } }