Dziwne zachowanie metody ?

0

Zerknijcie na te dwie metody, mam z nimi taki problem,jesli podam dla metody Download dwa parametry to mi zwraca wyniki(liste dokumentow) ale za to ta druga metoda Count nie zwraca nic(a powinna jak widac),natomiast jesli podam w metodzie Count trzy parametry to wtedy mi zwraca ilosc i nie wiem dlaczego tak sie dzieje,ze dla dwoch i jednego nie zwraca nic a dla trzech i wiecej zwraca mi counta, co tu moze byc nie tak?Metoda GetDokumenty - zwraca wynik zapytania sql akurat tutaj jest to like.

 public List<Typ> Download(string t, string r, string n, string p)
        {
            using (Uslugi.Gety.GetyClient usluga = new Uslugi.Gety.GetyClient())
            {
                string where = string.Format("P180 like '{0}.{1}.{2}.%'", PrzygotujTyp(t), PrzygotujRok(r), PrzygotujNumer(n));

                if (!string.IsNullOrEmpty(p))
                {
                    where = string.Format("P180 like '{0}.{1}.{2}.%{3}%'", PrzygotujTyp(t), PrzygotujRok(r), PrzygotujNumer(n), PrzygotujPozycje(p));
                }
                return GetDokumenty(where, null, null).ToList();
            }
        }
        public int Count(string t, string r, string n, string p)
        {
            return Download(t, r, n, p).Count();
        }
0

Nie dość, że żeby policzyć dokumenty trzeba je najpierw wszystkie pobrać, to samo liczenie odbywa się wolną metodą Count zamiast po prostu odwołania do właściwości Count.

Za mało kodu, żeby można było coś stwierdzić. Zaprzyjaźnij się z debugerem.

0

No jest tak dlatego ze pierwsza metoda jest wywolana pod jednym przyciskiem a druga pod innym dlatego potrzebuje oddzielnej metody.

Z debuggerem sie zapoznalem,breakpointy stawialem i jedyne co widze to ze wartosc ta jest rowna 0 ale nie wiem dlaczego,jak moge spr to bardziej doglebnie ?

Czy jest mozliwosc wyluskania z tej metody zmiennej count zeby przypisac ja do labelki ?

 public List<Typ> Download(string t, string r, string n, string p)
        {
             int count;
            using (Uslugi.Gety.GetyClient usluga = new Uslugi.Gety.GetyClient())
            {
                string where = string.Format("P180 like '{0}.{1}.{2}.%'", PrzygotujTyp(t), PrzygotujRok(r), PrzygotujNumer(n));
 
                if (!string.IsNullOrEmpty(p))
                {
                    where = string.Format("P180 like '{0}.{1}.{2}.%{3}%'", PrzygotujTyp(t), PrzygotujRok(r), PrzygotujNumer(n), PrzygotujPozycje(p));
                }
                var result = usluga.GetDokumenty(where, null, null);
                count = result.Count();
                return result;
            }
        } 
0

Na pewno możesz przekazać do metody jakąś zmienną i oznaczyć ją jako out np. public List<Typ> Download(string t, string r, string n, string p, out int count) i wywołać Download("A", "b',"c","d", liczba), gdzie liczba będzie jakąś zmienną, do której przypisana zostanie wartość count (przekażesz inta tak jakby przez referencję).
Tu znajdziesz więcej na temat słowa kluczowego out http://msdn.microsoft.com/en-us/library/t3c3bfhx%28v=vs.80%29.aspx

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