[C#] List<string[]> nummerordning

Permalänk
Avstängd

[C#] List<string[]> nummerordning

Tjo,

Finns det något bra sätt att fixa nummerordning siffran ligger i string[] i [2] innan så har jag kört med "454545|test|good" i en lista för att lösa mitt problem. Någon som sitter med en lösning?

public static List<string[]> Store = new List<string[]>(); Form1.Store.Add(new string[] { "test", "good", "48812698") });

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Medlem

@superegg: så du har en array i en lista och vill sortera siffror i din array? Vad betyder test och good? Vad är d e t du vill göra? Kanske finns det en bättre lösning än denna?

Om du vill sortera en array kolla upp tex bubblesort.

Visa signatur

[4770k delid] [1080 EK] [PG348Q] [Custom loop][1.75TB SSD]

Permalänk
Avstängd
Skrivet av theo0019:

@superegg: så du har en array i en lista och vill sortera siffror i din array? Vad betyder test och good? Vad är d e t du vill göra? Kanske finns det en bättre lösning än denna?

Om du vill sortera en array kolla upp tex bubblesort.

Jag hämtar data och spara det i en array och sen lägger det i en lista och sen så ska den läsa in det i en listview plus spara i en fil.

"test och good" tog jag som ett tex.

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Medlem

Vill du sortera listan efter heltalet i varje array, eller sortera siffrorna i heltalet?

Permalänk
Avstängd
Skrivet av elBenko:

Vill du sortera listan efter heltalet i varje array, eller sortera siffrorna i heltalet?

"sortera listan efter heltalet i varje array"

Stämmer bra då jag inte vill ändra något i array utan bara att dom ligger rätt ordning i listan.

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Legendarisk

@superegg: Är det så här du menar?

var list = new List<string[]>() { new string[] { "a", "a", "12" }, new string[] { "a", "a", "1" }, new string[] { "a", "a", "3" }, }; list.Sort((a, b) => { return Int32.Parse(a[2]) - Int32.Parse(b[2]); });

Visa signatur

Abstractions all the way down.

Permalänk
Medlem

@superegg: Nu är jag säkert helt dum i huvudet men fattar inte vad sjutton det är du vill göra. Hur ser din data ut som du läser in? Hur ser din array ut? Hur ser resultatet ut som du vill ha det? Ge gärna exempel med en 15-20 värden så man kan försöka tolka vad din indata är och vad du vill ha den utdata som. För du kan väl aldrig bara ha enbart 3 värden i din array? test, good och 48812698? Du måste väl ha något som liknar det här: "A","B","1","C","D","2","E","F","3","G","H","4","I","J","5","K","L","6" eller?

Permalänk
Avstängd
Skrivet av Biberu:

@superegg: Är det så här du menar?

var list = new List<string[]>() { new string[] { "a", "a", "12" }, new string[] { "a", "a", "1" }, new string[] { "a", "a", "3" }, }; list.Sort((a, b) => { return Int32.Parse(a[2]) - Int32.Parse(b[2]); });

Då siffran är datum så funkar inte Int32 utan behövs ulong men Sort verka inte klara av det?

Om din kod gör så att den blir så här

"a", "a", "12" "a", "a", "3" "a", "a", "1"

eller

"a", "a", "1" "a", "a", "3" "a", "a", "12"

Då löser det mitt problem.

Skrivet av ToddTheOdd:

@superegg: Nu är jag säkert helt dum i huvudet men fattar inte vad sjutton det är du vill göra. Hur ser din data ut som du läser in? Hur ser din array ut? Hur ser resultatet ut som du vill ha det? Ge gärna exempel med en 15-20 värden så man kan försöka tolka vad din indata är och vad du vill ha den utdata som. För du kan väl aldrig bara ha enbart 3 värden i din array? test, good och 48812698? Du måste väl ha något som liknar det här: "A","B","1","C","D","2","E","F","3","G","H","4","I","J","5","K","L","6" eller?

Har aldrig vart bra på att förklara och det blir inte lättare när man är morgontrött.

Kanske skulle sagt att det är datumet som jag vill ska gå i rätt ordning i listan dom andra data är bara ett tex.

@Biberu är inne på rätt spår.

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Legendarisk

@superegg: Hur ser dina datumsträngar ut?

Visa signatur

Abstractions all the way down.

Permalänk
Medlem

@superegg: http://www.csharp-examples.net/sort-array/ "Sorting array of custom type using delegate" borde ge dig en hint om hur du ska lösa ditt problem. Du ska alltså inte "göra om" allt till string utan ha det kvar som vad det är. I ditt fall så är det ett datum och då använder du det istället för att "tolka" fram och tillbaka.

Permalänk
Avstängd
Skrivet av Biberu:

@superegg: Hur ser dina datumsträngar ut?

Så här den ut just nu men håller på att fixa Unix TimeStamp.

"20180804214537"

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Legendarisk

@superegg: Med det där formatet har du sådan tur att du kan jämföra datumen som strängar, annars hade du behövt använda t.ex. DateTime.ParseExact för att konvertera först. Det kanske inte spelar någon roll i det här fallet, men generellt så vill du inte göra det inuti din callback eftersom att den då skulle behöver göra betydligt fler konverteringar än vad du har värden att jämföra.

var list = new List<string[]>() { new string[] { "a", "a", "20181004214537" }, new string[] { "a", "a", "20150804214537" }, new string[] { "a", "a", "20130804214537" }, }; list.Sort((a, b) => StringComparer .InvariantCulture .Compare( a[2], b[2] ) );

Körbart exempel:
https://dotnetfiddle.net/8eQrmL

Visa signatur

Abstractions all the way down.

Permalänk
Avstängd
Skrivet av Biberu:

@superegg: Med det där formatet har du sådan tur att du kan jämföra datumen som strängar, annars hade du behövt använda t.ex. DateTime.ParseExact för att konvertera först. Det kanske inte spelar någon roll i det här fallet, men generellt så vill du inte göra det inuti din callback eftersom att den då skulle behöver göra betydligt fler konverteringar än vad du har värden att jämföra.

var list = new List<string[]>() { new string[] { "a", "a", "20181004214537" }, new string[] { "a", "a", "20150804214537" }, new string[] { "a", "a", "20130804214537" }, }; list.Sort((a, b) => StringComparer .InvariantCulture .Compare( a[2], b[2] ) );

Körbart exempel:
https://dotnetfiddle.net/8eQrmL

Tack så mycket det funkar. <3

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666

Permalänk
Medlem

@superegg: Nu har du ju fått en lösning som fungerar. Men kanske något att tänka på inför nästa projekt du ger dig på:

1. Hur ska jag lagra min data? Fil? Databas? osv osv I det här fallet verkar du ha valt som en fil vilket kanske inte är det bästa, antar att du styr hur det som du ska använda lagras eftersom du funderade på att byta till Unix Time Stamp. Kolla lite på Entity, LINQ, SQLite. En kombination av LINQ och SQLite vore nog en bra lösning för dig i det här fallet.

2. I ditt nuvarande fall så kanske du redan när du läser in din data se till att det blir sorterat istället för att först läsa in och sedan sortera?

3. Det finns en LÅNG tråd som handlar om att kommentera sin kod här på SC. Ta och läs den. Bra läsning för de flesta, nybörjare som mer erfarna. Här var den https://www.sweclockers.com/forum/trad/1505351-kommentarer-ar...

Permalänk
Avstängd
Skrivet av ToddTheOdd:

@superegg: Nu har du ju fått en lösning som fungerar. Men kanske något att tänka på inför nästa projekt du ger dig på:

1. Hur ska jag lagra min data? Fil? Databas? osv osv I det här fallet verkar du ha valt som en fil vilket kanske inte är det bästa, antar att du styr hur det som du ska använda lagras eftersom du funderade på att byta till Unix Time Stamp. Kolla lite på Entity, LINQ, SQLite. En kombination av LINQ och SQLite vore nog en bra lösning för dig i det här fallet.

2. I ditt nuvarande fall så kanske du redan när du läser in din data se till att det blir sorterat istället för att först läsa in och sedan sortera?

3. Det finns en LÅNG tråd som handlar om att kommentera sin kod här på SC. Ta och läs den. Bra läsning för de flesta, nybörjare som mer erfarna. Här var den https://www.sweclockers.com/forum/trad/1505351-kommentarer-ar...

1. Jag brukar lägga allt i mysql database men då min kompis med ska använda programmet så lägger jag det i en fil hade annans tänkt lägga det i SQLite men orka inte fixa det.

2. Det ska jag fixa måste först se att koden funkar och sen kommer jag lägga det i en timmer som ska kolla lite då och då om det kommer ny data så uppdatera den både filen och listan och sen sortera det.

3.Har hållit på med C# sen 2011 men mitt minne är inte den bästa så glömmer lätt saker hela tiden sen så håller jag på med andra språk med. Bra länk där skulle jag kunna visa upp lite koder och se om koden är bra gjord och om det går att förbättra den.

Visa signatur

Man är inte dum för att man har stavproblem.
Läs mer om min synfel Visual Snow
Om mig ----> #16970666