reinserire la mia risposta da here
Qualche tempo fa, ho dovuto trovare la posizione di un determinato IP. Abbiamo ricevuto l'IP dalla richiesta. Ci sono database gratuiti che ci hanno dato questa mappatura. In IPv4, quando diciamo l'IP come "a.b.c.d" è essenzialmente un * (256^3) + b * (256^2) + c * (256) + d.
http://www.aboutmyip.com/AboutMyXApp/IP2Integer.jsp
così quando dici che vuoi un indirizzo IP comincia con "a", siete alla ricerca di indirizzi IP tra un * 256^3 e un * 256^3 + 256 * (256^2) (b = 256) + 256 * (256) (c = 256) + 256 (d = 256) (il limite inferiore/superiore può variare leggermente a seconda che si voglia includere/escludere i limiti).
Detto questo, ci sono IP specifici riservati per scopi specifici (come 127.0.0.1 che è localhost, 0.0.0.0 non può essere un IP ecc.).
Quindi la query LINQ sarebbe
"da I a IList dove i> = MIN & & i < = Max Selezionare i;"
dove IList è la vostra lista iniziale minimo è il vostro valore minimo per l'intervallo MAX è il vostro valore massimo per l'intervallo
Una nota di cautela - se si implementa questo al fine di verificare se un IP è su una particolare sottorete, allora non si può fare questo in modo affidabile senza prendere in considerazione la subnet mask pure. –
Sembra che non stia specificando una subnet mask. Se lo fosse, dovresti usare un singolo IP e specificare la sottorete, piuttosto che un intervallo di indirizzi IP. Gli intervalli sono normalmente usati perché un sacco di persone non sa quali sottoreti sono ... – Ian
simile/possibile duplicato - http://stackoverflow.com/questions/1820661/comparing-ipaddress-stored-as-varbinary/1821016#1821016 – ram