Linq 表达式在查询中运行函数

本文关键字:运行 函数 查询 表达式 Linq | 更新日期: 2023-09-27 18:34:52

我有一个简单的查询:

var ipLookup = _unit.Repository<IpLookup>().Queryable().FirstOrDefault(i =>
    ToInteger(i.From) <= intIp && ToInteger(i.To) >= intIp);

我想运行此方法:

public static long ToInteger(string ip)
{
    var arr = ip.Split('.').ToList();
    var a = Convert.ToInt32(arr[0]);
    var b = Convert.ToInt32(arr[1]);
    var c = Convert.ToInt32(arr[2]);
    var d = Convert.ToInt32(arr[3]);
    return Convert.ToInt64((a * Math.Pow(256, 3)) + (b * Math.Pow(256, 2)) + (c * 256) + d);
}

我不确定如何为此编写表达式以在查询中与linq一起使用。

Linq 表达式在查询中运行函数

当 Linq-to-sql 生成对数据库的查询时,它会将表达式转换为 sql 命令。它不能转换任何代码。在您的情况下,我会推荐一个标量值的用户定义函数,该函数在 .net 和 sql 上具有相同的主体(对于相同的行为(。有关更多详细信息,请参阅 MSDN