Program do zamiany cen

0

Mam pytanie stworzyłam program w C# który wczytuje fakture z programu i plik .csv ... Ten program ma zadanie podmienić mi cenę w 1720 miejscach tam gdzie ona się różni... faktura zawiera koło 5500 pozycji... Zrobiłam to w pętli ale strasznie długo trwa ta podmiana.. Czy jest jakiś sposób na to żeby wykonywało się to szybciej?

                tb.Columns.Add("Symbol", typeof(String));
                tb.Columns.Add("Nazwa", typeof(String));
                tb.Columns.Add("Cena Netto", typeof(float));
                tb.Columns.Add("Cena Netto1", typeof(float));

                Console.WriteLine("Liczba wczytanych rekordów: " + towary.Rows.Count);

                string slo = "falsz";
                int count = 0;

                foreach (DataRow row in towary.Rows)
                {
                    if (row["Status"].ToString().Equals(slo))
                    {
                        count++;
                        dr = tb.NewRow();
                        dr["Symbol"] = row["Symbol"];
                        dr["Nazwa"] = row["Nazwa"];
                        dr["Cena Netto"] = row["Cena Netto"];
                        dr["Cena Netto1"] = row["Cena Netto1"];
                        tb.Rows.Add(dr);
                    }

                }
                Console.WriteLine("Liczba nieprawidłowych danych w .csv: " + count);

                foreach (DataRow rt in tb.Rows)
                {
                    foreach (InsERT.SuPozycja poz in dok_poz)
                    {
                        if (rt["Symbol"].Equals(poz.TowarSymbol))

                        {

                            Console.WriteLine("Tak jest! " + poz.TowarSymbol);
                            poz.WartoscNettoPoRabacie = rt["Cena Netto1"];
                            poz.Opis = "ok";
                            

                        }
                    }
                }
0

Możesz zaprzęgnąć więcej rdzeni procesora do tego, zamiast dwóch pierwszych foreach uzyj Parallel.ForEach.
https://docs.microsoft.com/pl-pl/dotnet/standard/parallel-programming/how-to-write-a-simple-parallel-foreach-loop

0

W linii 21 dodajesz do tb.Rows a potem w 27 po niej iterujesz... może da się to zrobić w jednej pętli... (nie widzę całego kodu więc ciężko mi w 100% stwierdzić czy to możliwe).

A jeśli chodzi o poprzedni pomysł to ParalelLinq będzie dobre jeśli operacje będą rozłączne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1