Lozano23 [ Pretorianin ]
Pomoc przy konwersji z C# do VB.
Czy ktoś mógłby mi pomóc i przekonwertować ten krótki fragment kodu w C#:
Niestety translatory na necie się wysypują - może zna ktoś dobry i sprawdzony, który sobie z tym poradzi?
Dzięki.
legrooch [ MPO Squad Member ]
Po co Ci ten kawałek kodu?Obsługa LINQ z Datasetem i datatable w taki sposób? :O
Napisz od zera to, co potrzebujesz...
Lozano23 [ Pretorianin ]
Kumpel ma problem, ponieważ chce zrobić PIVOT danych otrzymanych z LINQ.
Ma kod, który obraca tabelę, ale jest on pod zwykłe zapytanie SQL.
Nie wiemy natomiast jak to przerobić na LINQ.
Kod do PIVOTu jest tutaj:
Problem w tym, że LINQ daje w rezultacie obiekt IQueryable i jest problemik z przejściem na tabelę.
legrooch [ MPO Squad Member ]
Lozano23 ==> .NET 2.0 ma opcję pivotu na SQL (jak i SQL posiada to w sobie). Otrzymujecie wynik i to co najwyżej jazda z LINQ.
Edit - wynik LINQ możecie albo przenieść jako poruszanie się po kolekcjach, albo jako rzutowanie na inny typ odpowiedni dla elementów.
Lozano23 [ Pretorianin ]
Otrzymujecie wynik i to co najwyżej jazda z LINQ.
Eee, czyli co? Zrezygnować z LINQ w tym przypadku?
Coś wyczytałem, że w beta wersjach LINQ były funkcje takie jak ToDataTable - czemu je wywali?
Lozano23 [ Pretorianin ]
^
legrooch [ MPO Squad Member ]
Lozano ==>Nie wiem, co chcecie zrobić....
Użyjcie Directcast jeżeli potrzebujecie przenieść cały obietk IQuerable lub poruszajcie się po obiekcie for each in iquerable, jeżeli potrzebujecie wyświetlić/zrobić coś z danymi.
Lozano23 [ Pretorianin ]
Chodzi o to, by wypełnić Grida odwróconą tabelą (pivot - zamiana kolumn z wierszami).
Próbowałem tak:
Dim db As New MojeDbDataContext
Dim query= ZAPYTANIE
Dim dt As DataTable = DirectCast(query, DataTable)
Grid2.DataSource = dt
Grid2.DataBind()
I dostaję błąd:
System.InvalidCastException: Nie można rzutować obiektu typu '<WhereIterator>d__0`1[VB$AnonymousType_1`5[System.Int32,System.String,System.DateTime,System.Nullable`1[System.Boolean],System.String]]' na typ 'System.Data.DataTable'.
legrooch [ MPO Squad Member ]
W jakim celu chcesz używać tu LINQ? Nie lepiej wykorzystać zwykłe zapytanie do SQL?
Ale omijając temat - w linku masz przykład pełnego pivotowania. Odpytaj zapytaniem TSQL odpowiednio bazę.