我有简单的查询:
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。
答案 0 :(得分:0)
当Linq-to-sql向DB生成查询时,它将表达式转换为sql命令。它无法转换任何代码。在你的情况下,我将在.net和sql(同样的行为)中使用相同的主体推荐一个标量值的用户定义函数。有关详细信息,请参阅MSDN