Расчет ценовых диапазонов с LINQ и соответствующими номерами продаж - PullRequest
2 голосов
/ 29 марта 2019

Для начала у меня есть класс, который в основном представляет все транзакции для определенных элементов, обычно это 100 элементов, для которых у меня есть транзакции.Класс выглядит следующим образом:

public class RawTransactions
    {
        public string SellerName { get; set; }
        public int FeedBackScore { get; set; }
        public int QuantityPurchased { get; set; }
        public DateTime TransactionDate { get; set; }
        public string ProductTitle { get; set; }
        public double CurrentPrice { get; set; }
        public double SalePrice { get; set; }
        public string ItemID { get; set; }
        public string Date { get; set; }
    }

На основе этого класса и транзакций внутри списка этого типа я создал функцию, которая в основном принимает наименьшую и наибольшую цену продажи по сравнению с любой транзакцией, присутствующей всоставить список и создать 7-ступенчатый ценовой диапазон

private List<double> GetRangeForElements(double minPrice, double maxPrice)
   {
     double step = (maxPrice - minPrice) / 7.00d;
     return Enumerable.Range(0, 8).Select(i => minPrice + i * step).ToList();
   }

Так, например, если я передам 0 долл. (наименьшая цена продажи) и 10 долл. (наивысшая цена продажи), будет создан список из 7 ценовых диапазонов, как показано ниже:

0
1.5
3
4.5
6
7.5
9
10

Это можно интерпретировать как:

0 - 1.5 price range
1.5 - 3 price range
3 - 4.5 price range
4.5 - 6 price range
6 - 7.5 price range

// and so on...

Использование выглядит следующим образом:

var ranges = GetRangeForElements(0,10); // Here I will have the ranges now

Теперь на основе этих диапазонов, которые были только что созданы, и существующих транзакцийчто у меня есть, мне нужно определить следующие параметры:

  • Диапазон цен
  • Сколько продаж для конкретного ItemID имеет продажи для определенного диапазона
  • Сколько продавцов (на основеУ свойства SellerName) были продажи в определенном ценовом диапазоне
  • Сколько продавцов (опять же на основе свойства SellerName) не было продаж в определенном ценовом диапазоне

Я не совсем уверен, как теперь я могу объединить все эти данные, чтобы получить эти параметры с помощью LINQ?Может кто-нибудь помочь мне с этим?

PS ребята, транзакции всех элементов хранятся в Списке, как показано ниже:

var allItemsTransactions = new List<ProductResearchRawTransactions>();

PS ребята, это существующее решение, которое у меня есть, ноэто дает мне совершенно неверные результаты:

var priceRanges = ranges.Select(r => new PriceRangeGraph
                {
                    Price = Math.Round(r, 2),
                    Sales = allItemsTransactions.Where(x => ranges.FirstOrDefault(y => y >= x.SalePrice) == r).Sum(x => x.QuantityPurchased),
                    SuccessfulSellers = allItemsTransactions.Where(x => ranges.FirstOrDefault(y => y >= x.SalePrice) == r).GroupBy(x => new { x.SellerName, x.QuantityPurchased }).Where(x => x.Key.QuantityPurchased > 0).Select(x => x.Key.SellerName).Count(),
                    UnSuccessfulSellers = allItemsTransactions.Where(x => ranges.FirstOrDefault(y => y >= x.SalePrice) == r).GroupBy(x => new { x.SellerName, x.QuantityPurchased }).Where(x => x.Key.QuantityPurchased == 0).Select(x => x.Key.SellerName).Count(),
                }).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...