WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   behöver lite hjälp med "top 5" på en datatable (https://www.wn.se/forum/showthread.php?t=1055745)

naak2803 2012-11-15 14:32

behöver lite hjälp med "top 5" på en datatable
 
Hej,
hoppas någon här inne kan hjälpa mig lite på traven,

- det jag vill göra är att ta ut ALLA värden från en databas
- sortera de efter antal km (görs i efterhand, då km inte finns med i db)
- visa endast top 5 (detta har jag problem med)

Kod:

...
 foreach (DataRow r in ds.Tables[0].Rows)
                {
                    DataRow row = table_b.NewRow();
                   
                    row[col1_b] = r["name"].ToString();
                    row[col2_b] = Helper.distance(double.Parse(sLat.Replace(".", ",")), double.Parse(sLng.Replace(".", ",")), double.Parse(r["lat"].ToString().Replace(".", ",")), double.Parse(r["lng"].ToString().Replace(".", ",")), 'K');

                    table_b.Rows.Add(row);
                }

                table_b.DefaultView.Sort = "km ASC";

                GridView2.DataSource = table_b; //<-- detta gör ju så att hela listan kommer med, men här vill jag på något sätt även lägga till "top 5"
                GridView2.DataBind();


naak2803 2012-11-15 14:47

löst!
lösta på detta sättet, vet dock inte om det är den bästa! men det funkar... =)

Kod:

foreach (DataRow r in ds.Tables[0].Rows)
                {
                    DataRow row = table_b.NewRow();
                   
                    row[col1_b] = r["name"].ToString();
                    row[col2_b] = Helper.distance(double.Parse(sLat.Replace(".", ",")), double.Parse(sLng.Replace(".", ",")), double.Parse(r["lat"].ToString().Replace(".", ",")), double.Parse(r["lng"].ToString().Replace(".", ",")), 'K');

                    table_b.Rows.Add(row);
                }

                table_b.DefaultView.Sort = "km ASC";

                DataTable cloneDataTable = table_b.Clone();

                for (int i = 0; i < 1; i++)
                    cloneDataTable.ImportRow(table_b.Rows[i]);

                GridView2.DataSource = cloneDataTable;
                GridView2.DataBind();


digiArt 2012-11-15 15:32

Google är din vän: http://stackoverflow.com/questions/1...get-the-top-10

Kod:

var rows = MyDataSet.Tables[0].Rows
  .Cast<DataRow>()
  .OrderByDescending(r => r["columnName"])
  .Take(10);


jonny 2012-11-16 06:27

Borde vara mer effektivt att mata in avståndet i databasen och sedan köra en top 5 direkt i databaslagret.


Alla tider är GMT +2. Klockan är nu 06:04.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson