Linq Expression在查询中运行func

时间:2016-02-16 13:12:22

标签: c# linq

我有简单的查询:

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。

1 个答案:

答案 0 :(得分:0)

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