private IEnumerable <Node> CheckMetadataStringOperator(MappingToolDatabaseDataContext dbContext, IEnumerable <Node> nodes, GraphQueryMetadata metadataTest) { List <Node> filteredNodes = null; if (metadataTest.Operator.Equals("Contains", StringComparison.InvariantCultureIgnoreCase)) { IQueryable <Node> queryableNodes = nodes.AsQueryable(); var filteredMetadata = from dbMetadata in dbContext.udf_SearchMetadataContains(metadataTest.Name, metadataTest.Value) select dbMetadata; int counter = filteredMetadata.Count(); filteredNodes = nodes.Join(filteredMetadata, x => x.NodeUid, y => y.NodeUid, (a, b) => a).ToList(); } else if (metadataTest.Operator.Equals("FreeText", StringComparison.InvariantCultureIgnoreCase)) { IQueryable <Node> queryableNodes = nodes.AsQueryable(); var filteredMetadata = from dbMetadata in dbContext.udf_SearchMetadataFreeText(metadataTest.Name, metadataTest.Value) select dbMetadata; int counter = filteredMetadata.Count(); filteredNodes = nodes.Join(filteredMetadata, x => x.NodeUid, y => y.NodeUid, (a, b) => a).ToList(); } else { filteredNodes = new List <Node>(); foreach (Node node in nodes) { if (metadataTest.Operator.Equals("Equals", StringComparison.InvariantCultureIgnoreCase)) { if (node.Metadatas.Where(metadata => metadata.MetadataName == metadataTest.Name && metadata.MetadataValue.Contains(metadataTest.Value)).Count() > 0) { filteredNodes.Add(node); } } else if (metadataTest.Operator.Equals("NotEquals", StringComparison.InvariantCultureIgnoreCase)) { if (node.Metadatas.Where(metadata => metadata.MetadataName == metadataTest.Name && metadata.MetadataValue != metadataTest.Value).Count() > 0) { filteredNodes.Add(node); } } } } return(filteredNodes); }
private IEnumerable<Node> CheckMetadataStringOperator(MappingToolDatabaseDataContext dbContext, IEnumerable<Node> nodes, GraphQueryMetadata metadataTest) { List<Node> filteredNodes = null; if (metadataTest.Operator.Equals("Contains", StringComparison.InvariantCultureIgnoreCase)) { IQueryable<Node> queryableNodes = nodes.AsQueryable(); var filteredMetadata = from dbMetadata in dbContext.udf_SearchMetadataContains(metadataTest.Name, metadataTest.Value) select dbMetadata; int counter = filteredMetadata.Count(); filteredNodes = nodes.Join(filteredMetadata, x => x.NodeUid, y => y.NodeUid, (a, b) => a).ToList(); } else if (metadataTest.Operator.Equals("FreeText", StringComparison.InvariantCultureIgnoreCase)) { IQueryable<Node> queryableNodes = nodes.AsQueryable(); var filteredMetadata = from dbMetadata in dbContext.udf_SearchMetadataFreeText(metadataTest.Name, metadataTest.Value) select dbMetadata; int counter = filteredMetadata.Count(); filteredNodes = nodes.Join(filteredMetadata, x => x.NodeUid, y => y.NodeUid, (a, b) => a).ToList(); } else { filteredNodes = new List<Node>(); foreach (Node node in nodes) { if (metadataTest.Operator.Equals("Equals", StringComparison.InvariantCultureIgnoreCase)) { if (node.Metadatas.Where(metadata => metadata.MetadataName == metadataTest.Name && metadata.MetadataValue.Contains(metadataTest.Value)).Count() > 0) { filteredNodes.Add(node); } } else if (metadataTest.Operator.Equals("NotEquals", StringComparison.InvariantCultureIgnoreCase)) { if (node.Metadatas.Where(metadata => metadata.MetadataName == metadataTest.Name && metadata.MetadataValue != metadataTest.Value).Count() > 0) { filteredNodes.Add(node); } } } } return filteredNodes; }