Gå til innhold

Spørsmål om Dictionary<TKey,TValue>.Select()


Anbefalte innlegg

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 :p

 

Noen som har et godt forslag til hvordan dette kan løses?

Lenke til kommentar
Videoannonse
Annonse

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

Ikke har select eller where? Den har det hos meg :p

 

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 av Manfred
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...