private void GenerateRecsForNodeArray() { List <Node> nodes = new List <Node>(); MemoryTree.ToList(nodes); nodes = nodes.Except(CurrentUser.NotShow).Except(CurrentUser.Favourite).ToList(); foreach (Node node in nodes) { node.Distance = 0.0; foreach (Node n in CurrentUser.Favourite) { DistanceCalculator calculator = new DistanceCalculator(node, n); node.Distance += calculator.CalculateDistance((MeasureType)MeasureTypeIndex); } node.Distance /= (double)CurrentUser.Favourite.Count(); } nodes.Sort(delegate(Node node1, Node node2) { if (node1 == null && node2 == null) { return(0); } if (node1 == null) { return(-1); } if (node2 == null) { return(1); } if (node1.Distance == node2.Distance) { return(0); } if (node1.Distance > node2.Distance) { return(1); } return(-1); }); Recommendations = new ObservableCollection <Node>(nodes.Take(UsersCount)); AddRecommendationsToItems(); }
private IEnumerable <Node> GenerateRecsForNodeArray() { var nodes = new List <Node>(); MemoryTree.ToList(nodes); nodes = nodes.Except(CurrentUser.NotShow).Except(CurrentUser.Favourite).ToList(); foreach (var node in nodes) { node.Distance = 0.0; foreach (var n in CurrentUser.Favourite) { var calculator = new DistanceCalculator(node, n); node.Distance += calculator.CalculateDistance((MeasureType)MeasureTypeIndex); } node.Distance /= (double)CurrentUser.Favourite.Count(); } nodes.Sort(delegate(Node node1, Node node2) { if (node1 == null && node2 == null) { return(0); } if (node1 == null) { return(-1); } if (node2 == null) { return(1); } if (node1.Distance == node2.Distance) { return(0); } if (node1.Distance > node2.Distance) { return(1); } return(-1); }); return(nodes); }
private void GenerateRecsForSingleNode(Node node) { List <Node> nodes = new List <Node>(); MemoryTree.ToList(nodes); nodes = nodes.Except(CurrentUser.NotShow).Except(new[] { node }).ToList(); foreach (Node n in nodes) { DistanceCalculator calculator = new DistanceCalculator(node, n); n.Distance = calculator.CalculateDistance((MeasureType)MeasureTypeIndex); } nodes.Sort(delegate(Node node1, Node node2) { if (node1 == null && node2 == null) { return(0); } if (node1 == null) { return(-1); } if (node2 == null) { return(1); } if (node1.Distance == node2.Distance) { return(0); } if (node1.Distance > node2.Distance) { return(1); } return(-1); }); Recommendations = new ObservableCollection <Node>(nodes.Take(RecsLength)); AddRecommendationsToItems(); }
private IEnumerable <Node> GenerateRecsForSingleNode(Node node) { var nodes = new List <Node>(); MemoryTree.ToList(nodes); nodes = nodes.Except(CurrentUser.NotShow).Except(new[] { node }).ToList(); foreach (var n in nodes) { var calculator = new DistanceCalculator(node, n); n.Distance = calculator.CalculateDistance((MeasureType)MeasureTypeIndex); } nodes.Sort(delegate(Node node1, Node node2) { if (node1 == null && node2 == null) { return(0); } if (node1 == null) { return(-1); } if (node2 == null) { return(1); } if (node1.Distance == node2.Distance) { return(0); } if (node1.Distance > node2.Distance) { return(1); } return(-1); }); return(nodes); }