.net 如何在LINQ C#中检查给定IP范围内的IP

2izufjch  于 2023-01-06  发布在  .NET
关注(0)|答案(1)|浏览(119)

我有一个SQL查询

WHERE Network <= @ipaddress AND LastIp >= @ipaddress

我需要将它转换为LINQ查询。Network和LastIp列是字符串。我从应用程序的输入中接收@ipaddress。

string.Compare(ip.Network,ipAddress) == -1
&& string.Compare(ip.LastIp,ipAddress) == 1

使用字符串比较可以吗?或者有没有其他更安全的方法来做?所以感谢任何帮助。

PS: Need to compare directly into LINQ Query with Repository Context. So i tried to use IpAddress function but it gave the LINQ Expression error.
mwkjh3gx

mwkjh3gx1#

可以使用以下函数执行convert IP to uint

public uint IpAddressToUint(string ipAddress)
  {
      var address = IPAddress.Parse(ipAddress);
      byte[] bytes = address.GetAddressBytes();
      return BitConverter.ToUInt32(bytes, 0);
  }

比较单元:

IpAddressToUint(ip.Network) <= IpAddressToUint(ipAddress) && 
IpAddressToUint(ip.LastIp) >= IpAddressToUint(ipAddress)

相关问题