2017-05-06 2 views
-1

meine Frage ist, wie Zellwerte in Datagridview zu summieren Verwendung schneller als mein CodeSummenwerte in Datagridview mit out für jede Zeile vb.net mit

col1 .... col2 ..... col3

1 ........ 3 ......... 22

2 ....... 4 ......... 22

4. ....... 1 .......... 55

10 ........ 1 ......... 22

dies ist mein Code

barcount = 0 
For Each row As DataGridViewRow In DataGridView1.Rows 
    If row.Cells(3).Value = 22 Then 
     barcount += (row.Cells(1).Value * row.Cells(2).Value) 
    End If 
Next 

oder

wie

BarCount = DataGridView1.Rows.Cast (Of DataGridViewRow) .Select CStr verwenden (row.Cells (0) .Value * row.Cells (1) .Value), wo row.Cells (3) .Value = 3

dank

+0

Wo Sie diese Daten immer, wenn von DB dann dort tun. Alles, was mit Daten zu tun hat, ist immer langsamer, nachdem es abgerufen wurde. Wenn Sie es so ausspucken, wie Sie es brauchen, dann gibt es keine Manipulation nach ... Verwenden Sie auch den Namen der Spalten ** niemals ** verwenden Sie den Spaltenindex, was passiert, wenn Sie Spalten neu anordnen möchten, ist Ihre Logik jetzt pleite. – Codexer

Antwort

-1

Sie sagen, dass Sie etwas schneller als die Verwendung einer Schleife bu wollen t LINQ wird nicht schneller sein. LINQ ermöglicht es Ihnen, prägnanter Code zu schreiben, aber es wird selten schneller und in der Regel langsamer als eine gut geschriebene Alternative sein.

Das heißt, die LINQ zu ersetzen, die Schleife würde wie folgt aussehen:

Dim barCount = DataGridView1.Rows. 
          Cast(Of DataGridViewRow)(). 
          Where(Function(row) CInt(row.Cells(3).Value) = 22). 
          Sum(Function(row) CInt(row.Cells(1).Value) * CInt(row.Cells(2).Value)) 
+0

Vielen Dank für diese Antwort, SIE sagten, dass normalerweise weniger, Sie meinen für große Daten in Gridview wird langsamer sein als Schleife –

+0

LINQ-Code ist fast immer langsamer als eine äquivalente Schleife und wird in der Regel nur schneller, wenn es vereinfachen und sonst komplex, mehrstufige Abfrage In den meisten Fällen wird der Unterschied jedoch aufgrund der Art der Abfrage und der Menge der involvierten Daten vernachlässigbar sein. Ich erwähnte es, weil Sie sagten, dass Sie etwas schneller wollten, aber Sie verwenden LINQ im Allgemeinen für Einfachheit, nicht für Leistung. Im Zweifelsfall nur beide Optionen Zeit, um den Unterschied zu sehen. – jmcilhinney

+0

Eine gute Möglichkeit festzustellen, ob linq langsamer oder schneller als eine Schleife ist, ist die Überprüfung des kompilierten JIT-Codes beider Varianten –

Verwandte Themen