Для начала у меня есть класс, который в основном представляет все транзакции для определенных элементов, обычно это 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();