Manfred Skrevet 11. november 2008 Del Skrevet 11. november 2008 Jeg har følgende to structer: Klikk for å se/fjerne innholdet nedenfor struct Parameters { public int gatewayId; public int mcc; public int mnc; public string errorCode; public string type; public Parameters(int _gatewayId, int _mcc, int _mnc, string _errorCode, string _type) { gatewayId = _gatewayId; mcc = _mcc; mnc = _mnc; errorCode = _errorCode; type = _type; } } struct Result { public int errorId; public int statusId; public int rerouteGw; public Result(int _errorId, int _statusId, int _rerouteGw) { errorId = _errorId; statusId = _statusId; rerouteGw = _rerouteGw; } } Disse putter jeg inn i en Dictionary Dictionary<Parameters, Result> Så kommer den morsomme casen. mnc og mcc er stort sett positive tall, men disse er -1 dersom den er ukjent eller gjelder flere mnc/mcc-kombinasjoner. en melding som skal sjekkes mot disse kan komme med enten mcc/mnc satt, eller med -1. Klikk for å se/fjerne innholdet nedenfor Det er greit hvis meldingen har -1, for da er det kun det som skal sjekkes mot tabellen og jeg kan ta en "list[new Parameters(1,-1,-1... osv)" Problemet kommer til hvis jeg f.eks får inn mcc=242, mnc=1, gatewayid=1, men i tabellen kun har mcc=-1, mnc=-1, gatewayid=1 (fordi denne gjelder for alle uansett mnc/mcc). Hvordan kan jeg finne den aktuelle Result? For å gjøre det litt enklere for dere, så ville en SQL-spørring blitt på formen: SELECT TOP 1 * FROM Gateway_Errorcodes WHERE fk_gateway_id = 1 AND mcc IN(242,-1) AND mnc IN(1,-1) ORDER BY mcc DESC, mnc DESC Så jeg skal da ha et resultat uansett om tabellen inneholder mcc/mnc-kombinasjonen, eller en -1 verdi som angir at den gjelder for alle. Jeg har en mistanke om at jeg bør bruke Dictionary<TKey,TValue>.Select(), men der stopper mistankene mine Noen som har et godt forslag til hvordan dette kan løses? Lenke til kommentar
GeirGrusom Skrevet 11. november 2008 Del Skrevet 11. november 2008 Jeg kan ikke se at Dictionary<TKey,TValue> har hverken Select() eller Where() funksjon... Hvorfor bruker du dictionary egentlig? er ikke det litt tumlete siden du ikke har noen sammenligningsoperator der? Kan ikke disse to strukturene sammenfalles og legges i en list, så er det bare å bruke linq? Lenke til kommentar
Manfred Skrevet 11. november 2008 Forfatter Del Skrevet 11. november 2008 (endret) Ikke har select eller where? Den har det hos meg Men ja, jeg fikk nettopp en mail fra en fyr med en løsning til meg, så jeg kan poste løsningen i morra når jeg kommer på jobb ^^ Edit: .Select() og .Where er vel en del av IEnumerable, så de er ikke direkte i Dictionary, men denne arver vel av IEnumerable... Eller noe slikt... Endret 11. november 2008 av Manfred Lenke til kommentar
GeirGrusom Skrevet 11. november 2008 Del Skrevet 11. november 2008 Ja hehe det var jeg som hadde valgt .NET 2.0 istedet for 3.5 Fant dem nå ^^ Lenke til kommentar
Manfred Skrevet 11. november 2008 Forfatter Del Skrevet 11. november 2008 amatør ass... Lenke til kommentar
GeirGrusom Skrevet 12. november 2008 Del Skrevet 12. november 2008 amatør ass... Vel, sånn er jeg Lenke til kommentar
Manfred Skrevet 12. november 2008 Forfatter Del Skrevet 12. november 2008 Har løsningen klar nå, men det ble litt vel mye å lime inn her Dessuten er det kode vi har betalt for, så... Uansett bruker jeg nå da Linq til å lese inn tabellen i en generisk liste, og kjører Linq-spørringer mot denne. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå