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