gpt4 book ai didi

c# - LINQ to SQL - 自定义函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:35:45 27 4
gpt4 key购买 nike

我想像这样运行 LINQ 查询:

var words = from p in db.Words
where p.Document.Corpus.Name == corpus
//where LevenshteinDistance(p.Text.ToCharArray(), word.ToCharArray()) < threshold
select p;

但是如果我在其中放置“LevenshteinDistance”函数,它将产生一个错误:

NotSupportedException: Method 'Char[] ToCharArray()' has no supported translation to SQL.

有正确的方法吗?

最佳答案

LINQ to SQL 尝试将整个表达式转换为 SQL。如果要在 SQL Server 上运行距离函数,则需要定义 SQL Server UDF 并将自定义 CLR 方法映射到它。如果您满足于获得所有结果,然后在距离函数上过滤客户端,请使用 AsEnumerable():

var words = (from p in db.Words
where p.Document.Corpus.Name == corpus)
select p)
.AsEnumerable()
.Where(p => /* distance function */ < threshold);

AsEnumerable 强制 LINQ to SQL 枚举查询结果,允许使用 LINQ to Objects 和您的距离委托(delegate)来解析查询的其余部分(而不是转换为 SQL)。

关于c# - LINQ to SQL - 自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com