从数据表中排除IP地址范围

时间:2014-06-02 12:24:08

标签: c# asp.net datatable

我有一个数据表,其中包含一个包含IP地址的列。我需要能够过滤行并删除所有行,其中IP地址在10.20.1.xxx到10.20.15.xxx以及10.20.61.xxx的范围内。 (即排除10.20.1.xxx,10.20.2.xxx,...,10.20.14.xxx,10.20.15.xxx和10.20.61.xxx)。

3 个答案:

答案 0 :(得分:0)

SQL

DELETE FROM sometable WHERE ip LIKE '10.20.1.%'

DELETE FROM sometable WHERE ip LIKE '10.20.%'

LINQ的

如果您没有任何关于如何从数据库获取数据的代码,这只会为您提供要删除的行列表,您可以从那里获取

var itemsToDelete = someList.Where(x => x.Ip.StartsWith("10.20.1"));

答案 1 :(得分:0)

这对我有用:

Newtable = (from r in table.AsEnumerable()
    where (
        Convert.ToInt32(r.Field<string>("IP").Split('.')[2]) > 15 &&  
        Convert.ToInt32(r.Field<string>("IP").Split('.')[2]) != 61)
    select r).CopyToDataTable();

答案 2 :(得分:0)

我会做以下事情,

        DataTable dt; //your datatable here
        DataView dv = dt.DefaultView;
        foreach (DataRow dr in dt.Rows)
        {

            if (Regex.IsMatch(dr["Column name of your IP"].ToString(), "regex to check  IP") == false)
            {
               //Delete that row or something
            }
            else
            {
               //Do something else
            }
        }
        DataTable tempTable = dv.ToTable();
       //where temptable is your sorted and updated datatable

您可以将其存储在方法中并调用它以在您绑定的任何地方或之前执行检查。