Hittade inget vettigt när jag sökte på detta. De exempel jag såg var för C#, och eftersom jag tyvärr är fast i VB.NET, och jag tror att detta är ett av de ställena där C# och VB.NET diffar så söker jag mig hit... anonyma typer kan bara användas inne i en metod, så du hamnar nog på nån workaround typ dom du beskrev. Satan i helvete. Tack. Tycker det låter som att du vill kombinera dem pga presentationsbehov? <b>>Ett förslag då är att använda dig av inspiration från [...]</b> Du hade då kunnat använda Group By och en del andra lösningar för att få dem i önskad ordning... men nog om detta då det tydligen inte var med exakt de exempelklasser som du angett. Förtydligande: jag kör inte ASP.NET, det här är winforms. Ok Niklas. Eh, jag menade inget illa. Jag hade lite bråttom och tyckte det var bättre att svara och förtydliga mig, eftersom asp.net vs winforms ändå har rätt stora skillnader.Returnera anynonymt Linq-svar från funktion?
Låt säga att vi har två klasser:
Company
ID
Name
Employee
ID
Name
CompanyID
Nu har jag funktioner
GetEmployeeList() As List(Of Employee)
GetCompanyList() As List(Of Company)
Och jag vill bara joina dem, men göra det i en funktion. Vad jag försöker med då blir ju:
Function GetEmployeeAndCompany() As ?
Return (From e in GetEmployeeList() Join _
c in GetCompanyList() on e.CompanyID Equals c.ID
Select e, c)
End Function
Men vad sätter jag för returtyp? Kör jag bara med IQueryable får jag ju ingen intellisense och det blir inte typsäkert.
Måste man skapa en separat "EmployeeAndCompany"-klass?
Eller måste man lägga in koden i varje funktion?
För om jag kör:
Dim x = (From e in GetEmployeeList() Join _
c in GetCompanyList() on e.CompanyID Equals c.ID
Select e, c)
Så får jag intellisense på x.e.ID. Vad är det jag har missat?Sv: Returnera anynonymt Linq-svar från funktion?
Sv:Returnera anynonymt Linq-svar från funktion?
Då skippar jag det och gör en fullösning. =)PresentationModel - Sv: Returnera anynonymt Linq-svar från funktion?
Ett förslag då är att använda dig av inspiration från http://martinfowler.com/eaaDev/PresentationModel.html
Gillar du riktiga fullösningar så borde du kunna returnera en lista av Employee
och för varje eg. Company-instans skapa en Employee-instans med tex companyID = 0 (magiskt nummer då du antagligen har en räknare som börjar på 1? )
EgenskapernaID och Name är ju samma dem emellan.Sv: PresentationModel -Returnera anynonymt Linq-svar från funktion?
Jepp, det är förstås en tänkbar lösning, och grovt sett det jag menar med "skapa en separat "EmployeeAndCompany"-klass".
I en annan situation behöver jag verkligen kombinera på samma sätt, och då handlar det inte om presentation. I det fallet kan det dock vara en feldesign från min sida (klassisk "designat för databasen istället för oo").
<b>>Gillar du riktiga fullösningar så borde du kunna returnera en lista av Employee
och för varje eg. Company-instans skapa en Employee-instans med tex companyID = 0 (magiskt nummer då du antagligen har en räknare som börjar på 1? )
EgenskapernaID och Name är ju samma dem emellan.</b>
För det första så är det ju bara ett exempel, låt säga att employee har BirthDate och Company har Address. Då funkar det ju inte, och då måste jag skaffa en ny klass ändå.
Oavsett så är det ju ändå ingen vidare lösning, då hamnar ju employee och company på olika rader, hela poängen är ju att jag ska se employee och company tillsammans. Linq -Returnera anynonymt Linq-svar från funktion?
Bra, då vet du iaf om en OO-lösning så då lämnar jag den oxå därhän utan mer snack om den.
Ett alternativt sätt är att läsa in dem båda och loopa ut resultetet genom att för varje då i ditt exempel company läsa ut relaterade employee (baserat på ditt ID dom du hade) MHA Linq fråga; detta kan du ju göra på en himla massa sätt som du säkert vet om men jag skriver för andra som läser samma tråd ändå för sakens skull...
* databinda mot kollektionen av Company och senare
antingen mha händelser för databunden kontroll
eller med metod som anropas i din aspx mha #
skicka in company ID och mha Linq mot kollektion av Employee databinda de data du vll ha för varje
tex med nestad repeater mm.
(och jag menar å naturligtvis LINQ som in memory query och inte Linq to sql)
Jag avslutar med att ge 2 ytterligare länkexempel; dessa visar på möjlighet att använda anonyma datatyper.
(och JA de är i c# men du kan kanske på egen hand använda online-konverterare c# till vb på de kodexempel som ges i länkarna.)
http://www.west-wind.com/weblog/posts/189329.aspx
http://tomasp.net/blog/cannot-return-anonymous-type-from-method.aspxSv: Linq -Returnera anynonymt Linq-svar från funktion?
Sv:Linq -Returnera anynonymt Linq-svar från funktion?
Lycka till i fortsättningen...
jag hoppas att du ändock fick ut ngt av ngn av länkarna.
Av din i mitt tycke lite tråkiga feeback på ärligt menade försök till hjälp, är mitt slutliga svar
>>Google<<
Där kan du förmå Google att söka på JUST det DU vill ha och "menar" (och exkludera det du inte vill ha).Sv: Linq -Returnera anynonymt Linq-svar från funktion?
Men om du kollar på min grundfråga så är det ju ändå så att alla lösningarna utom att just generera "presentationsmaterial" utgår ifrån en ganska hårt kopplad kodning, det var just det jag ville komma ifrån utan att behöva skapa nya klasser. Ok?
Det är lite synd att Generics är så begränsade, annars hade det gått att lösa rätt snyggt där.