Linq pobranie 2 wartosci ?

Odpowiedz Nowy wątek
2011-10-17 11:57
newbie
0

Mam w bazie taka tabelke ktora ma 3 wartosci,DokAutors to nazwa tabeli:
Imie:
jacek
romek
stachu

chce wyswietlic najpierw 1 wartosc co robie tak i dziala:

foreach (var i in doc.DokAutors)
            {
                sb.Append(i.Imie);
                break;
            } 

ale w jaki sposob wyswietlic tylko druga wartosc ?

Pozostało 580 znaków

2011-10-17 12:12
newbie
0

Zeby wyswietlic druga wartosc probowalem tak,ale nie dziala:

 sb.Append(doc.DokAutors.Select(i => i).Take(2).Take(1).OrderByDescending(a=>a.IdDok));

Pozostało 580 znaków

2011-10-17 12:27
0

To chyba powinno być mniej więcej tak:

 sb.Append(doc.DokAutors.Select(i => i).OrderByDescending(a=>a.IdDok).Skip(1).FristOrDefault());

Take bierze k pierwsze elementy, a Skip opuszcza k pierwszych elementów. Można o tym przeczytać w podpowiedzi InteliSense - polecam :P
EDIT:
To select jest tu chyba zbędne więc będzie tak:

 sb.Append(doc.DokAutors.OrderByDescending(a=>a.IdDok).Skip(1).FristOrDefault());
edytowany 2x, ostatnio: Sarrus, 2011-10-17 12:46
A nie Skip(1).Take(1)? - somekind 2011-10-17 12:49
Można by i tak ;] - Sarrus 2011-10-17 12:58

Pozostało 580 znaków

2011-10-17 12:47
newbie
0

Niby podpowiada o Tobie cos zle podpowiedzial,bo to nie dziala.

O mnie coś źle podpowiedział? Lać łobuza ! :P - Sarrus 2011-10-17 12:59

Pozostało 580 znaków

2011-10-17 12:47
0
newbie napisał(a)
foreach (var i in doc.DokAutors)
{
sb.Append(i.Imie);
break;
} 

Uruchomić pętlę po to, żeby ją przerwać po pierwszej iteracji. Padłem. :D :D :D

Dlaczego bierzesz się za coś, czego nie rozumiesz? Poczytaj książkę zanim weźmiesz się za programowanie.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2011-10-17 12:52
newbie
0

W ksiazce nie wyczytam gotowych rozwiazan,dlatego pytam i probuje sam,takze jak nie masz nic ciekawego do powiedzenia to lepiej nie pisz nic.

Pozostało 580 znaków

2011-10-17 13:00
0

Z książki mógłbyś się za to wreszcie dowiedzieć, co to są i do czego służą pętle. ;]

Coś ciekawego, to ja mógłbym powiedzieć, gdybyś w sensowny sposób swój problem przedstawił.
Nie możesz się po prostu odwołać po indeksie?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2011-10-17 13:00

Pozostało 580 znaków

2011-10-17 13:07
0
newbie napisał(a)

Niby podpowiada o Tobie cos zle podpowiedzial,bo to nie dziala.

Błąd kompilacji czy złe wyniki? Na takie coś zwykle odpowiadam "A u mnie działa" :P

Pozostało 580 znaków

2011-10-17 13:19
newbie
0

No wlasnie po indeksie nie dziala i wyswietla mi nazwe klasy.metody itd.

Pozostało 580 znaków

2011-10-17 13:23
0
newbie napisał(a)

No wlasnie po indeksie nie dziala i wyswietla mi nazwe klasy.metody itd.

Może tak?

doc.dokAutors[1].Imie

Wszedłem na wyższy poziom skill'a "cierpliwość" :D

Pozostało 580 znaków

2011-10-17 13:24
newbie
0

Generalnie problem jest taki,ze dany id ma w danej kolukmnie 3 wartosci i chce w roznych miejscach w kodzie je wyswietlic np tutaj wartosc 1 a za 20 linijek wartosc 2 i gdzies tam 3. Zrobilem cos takiego:

 var result = doc.Tabelka1.Select(i => i).Take(3).Take(1).OrderByDescending(a => a.Id);
            foreach (var i in result)
            {
                sb.Append(i.Imie);

            }
            foreach (var i in result)
            {
                sb.Append(i.Nazwisko);               

            }
                sb.Append("</autor>");            
            sb.Append("<autor-sort>");
            foreach (var i in result)
            {
                sb.Append(i.NazwiskoImie);                

            }

No to niby jest ok ale co jesli w tej kolumnie bedzie 100 wartosci,to co wg tego bede musial sto takich linijek pisac:
var result = doc.DokAutors.Select(i => i).Take(3).Take(1).OrderByDescending(a => a.IdDokAutor);

No nie usmiecha mi sie ;D

Juz wiecie o co doklanie chodzi,pytanie do Pana Somekind?

ok doszedlem thx

Cieszymy się :) - Sarrus 2011-10-17 15:33

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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