簡體   English   中英

SQL到Linq->選擇最大和最小

[英]SQL to Linq --> select max and min

我試圖獲取特定IP地址的國家/地區,該IP按范圍(長整數)存儲在數據庫中

我有以下SQL查詢:

select * from dbo.ip
where IP_From = ( select max(IP_From) 
            from dbo.ip
            where IP_From <= @ipAddress 
            ) 
and IP_To = ( 
        select min(IP_To) 
            from dbo.ip
            where IP_To >= @ipAddress 
                ) 

數據庫中的數據

IP_From     IP_To       Registry
16777728    16778239    apnic   1302739200  CN  CHN China
16778240    16779263    apnic   1302566400  AU  AUS Australia
16779264    16781311    apnic   1302566400  CN  CHN China
16781312    16785407    apnic   1302566400  JP  JPN Japan
16785408    16793599    apnic   1302566400  CN  CHN China
16793600    16809983    apnic   1302566400  JP  JPN Japan
16809984    16842751    apnic   1302220800  TH  THA Thailand

我正在努力 :

    //string strHttpClientIP = System.Web.HttpContext.Current.Request.UserHostAddress;
    string strHttpClientIP = "58.8.247.169";
    var splitIP = strHttpClientIP.Split('.');
    var a = splitIP[0];
    var b = splitIP[1];
    var c = splitIP[2];
    Int64 intIPFrom = FunctionsGlobal.IP2Int(Convert.ToString(a + "." + b + "." + c + ".0"));
    Int64 intIPTo = FunctionsGlobal.IP2Int(Convert.ToString(a + "." + b + "." + c + ".255"));

    var IPList = db.IpToCountries;

     var MaxIpFrom = IPList.Max(i => i.IP_From);
    var MinIpTo = IPList.Min(i => i.IP_To);
    var QueryCurrency = IPList.Where(i=>i.IP_From == MaxIpFrom && i.IP_To == MinIpTo); 

哪個ID喜歡轉換為Linq C#查詢,有任何線索嗎?

像這樣的東西

from ip in IPList
let maxIp = IPList.Where(a=>a.IP_From <= ipAddress).Max(a=>a.IP_From) 
let minIp = IPList.Where(a=>a.IP_To >= ipAddress).Min(a=>a.IP_To)
where ip.IP_From == maxIp && ip.IP_To == minIp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM