代码之家  ›  专栏  ›  技术社区  ›  julian bechtold

如何在c_中按项3对concurrentbag<tuple<string,int,decimal>>)进行排序?

c#
  •  0
  • julian bechtold  · 技术社区  · 6 年前

    我有一个 ConcurrentBag<Tuple<string,int,decimal,string>> pricelist 想把它分类 pricelist.Item3

    我以前只是 List<Tuple<string,int,decimal,sting>> priceList 并将其排序为:

    priceList.Sort((x, y) => x.Item3.CompareTo(y.Item3));

    由于多线程处理,我将其与concurrent bag交换,但我不知道如何对并发包进行排序。

    因此,请帮我分类 priceList 通过 Item3

    这是我当前的伪代码:

        ConcurrentBag<(string intemID, int amount, decimal price, string seller)> temporaryPriceList = new ConcurrentBag<(string, int, decimal, string)>();
        Parallel.ForEach(cardProductIDs, (productID) =>
        {
            int indexCondition = GlobalVar.cardConditions.IndexOf(card.condition);
            foreach (var price in task.GetProductSellers(int.Parse(productID), minUserScore, idLanguage, indexCondition))
            {
                temporaryPriceList.Add(price);
            }
        });
        temporaryPriceList.OrderBy(element.price);
    

    这是我以前的工作代码:

        List<Tuple<string, int, decimal, string>> temporaryPriceList = new List<Tuple<string, int, decimal, string>>();
        // add sellers for productcategory
        foreach (string productID in cardProductIDs)
        {
            int indexCondition = GlobalVar.cardConditions.IndexOf(card.Item3);
            temporaryPriceList.AddRange(GetProductSellers(int.Parse(productID), minUserScore, idLanguage, indexCondition));
        }
        // sort
        temporaryPriceList.Sort((x, y) => x.Item3.CompareTo(y.Item3));
        // Process with the cheapest sellers
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Sergei Zinovyev    6 年前

    您可以按以下方式对数据进行排序:

    temporaryPriceList.ToArray()
    .OrderBy(v=>v.Item3)
    .ToArray()