[ manix @ 04.06.2009. 14:50 ] @
Ima bazu u kojoj ima odredjene tekstove recimo u polju text... na osnovu nekog upita veznaog za druge podatke dobijem recim 20 rezultat, i to je sve ok
Problem je sledeci, posto je rec o tekstovima iz crkvenih knjiga potrebno mi je da te tekstove sortiram po odredjenom redosledu koji inace nije abecedni...
Recim da svi tekstovi treba da se sloze po sledecem rasporedu a,b,n,r,t,w,s...
Znaci da sam napravim niz po kome ce se sortirati. Naravno, bilo bi dobro da se sortiranje primen na celiokupan tekst ili najmanje prvih 10 karaktera.
Da li neko ima ideju kako ovo odraditi???
Resenje ne mora biti u upitu...
[ toocold @ 04.06.2009. 22:30 ] @
Ajde daj lepo objasnjenje sa recimo nekim primerom, nije mi jasno ono a,m,j,k,l... a posle kaze da se sortira najmanje 10 karaktera.
[ sallle @ 04.06.2009. 22:50 ] @
napravi svoju klasu koja ce implementira IComparer,

i onda kod klasa koje imaju Sort() metodu umesto nje zoves Sort(Icomparer)
[ manix @ 05.06.2009. 15:51 ] @
Citat:
toocold: Ajde daj lepo objasnjenje sa recimo nekim primerom, nije mi jasno ono a,m,j,k,l... a posle kaze da se sortira najmanje 10 karaktera.


pa prosto imam neke tekstove

Arteks
Exterra
Infiniti
Garman
Kiko

i abecedno (standardno) sortiranje bi bilo
Arteks, Exterra, Garman, Infiniti, Kiko
dake slaze po redosledu a,b,c,d,e,f,g.......

A meni treba da npravi sortiranje po svom redosledu.
Recimo e,i,a,g,k.... ili konkretno
Exterra, Infiniti, Arteks, Garman, Kiko
znaci treba mi redosleda koji cu sam napraviti

Citat:
sallle: napravi svoju klasu koja ce implementira IComparer,

i onda kod klasa koje imaju Sort() metodu umesto nje zoves Sort(Icomparer)

hmm...
Pa ne znam kako to da napravim, ako moze neka pomoc... Svakako cu sada malo da potrazim po netu
[ Igor Gajic @ 05.06.2009. 17:12 ] @
Ovo nije bas savrseno resenje ali ti daje primer kako treba uraditi:

Code:

using System;
using System.Collections.Generic;

namespace StringSort
{
    class Program
    {
        static void Main()
        {
            List<string> lista = new List<string> {"Arteks", "Exterra", "Infiniti", "Garman", "Kiko"};

            lista.Sort(new Sorter());
            lista.ForEach(Console.WriteLine);
            Console.ReadKey();
        }    
    }

    public class Sorter : IComparer<string>
    {
        private List<char>niz = new List<char>{'E', 'I','A','G','K'};
        public int Compare(string x, string y)
        {
            int manjaDuzina = x.Length > y.Length ? y.Length : x.Length;

            if (manjaDuzina == 0) return 0;
            for (int i = 0; i < manjaDuzina; i++)
            {
                if (niz.IndexOf(x[i]) > niz.IndexOf(y[i])) return 1;
                if (niz.IndexOf(x[i]) < niz.IndexOf(y[i])) return -1;
            }
            return 0;
        }
    }   
}


[Ovu poruku je menjao Igor Gajic dana 05.06.2009. u 18:25 GMT+1]