gpt4 book ai didi

c# - Linq - 比较字段的音译值

转载 作者:太空狗 更新时间:2023-10-30 01:27:29 25 4
gpt4 key购买 nike

我有一个表(sql server)。其中一列(“名称”)包含西里尔字母值。

我从参数中收到值,该值包含在此字段中但已音译。

我的意思是:'Вася' -> 'Vasya'。我需要先音译值字段;

var q = from r in m_DataContext.Table where CTransliteration.Transliterate(r.Name).Contains(trans_text) select r;

m_DataContext.Table.Select(r => r.name=CTransliteration.Transliterate(r.Name))

最佳答案

我从未见过“CTransliteration.Transliterate”——我假设它来自您自己的软件/第 3 方库是否正确?

您针对 DataContext 的 Linq 查询被转换为 SQL,然后在 SQL Server 上执行。您将无法表达要在 SQL 中运行的查询:CTransliteration。Transliterate 不是 SQL 语言的一部分。

我认为有两种方法可以去:a) 将查询拆分为在 SQL Server 上运行的部分,并在 .NET 中进行音译。对于您列出的 SELECT,这不是问题:

m_DataContext.Table
.ToList()
.Select(r => r.name=CTransliteration.Transliterate(r.Name));

对于 WHERE 子句,这是一个糟糕的选择,因为您需要将所有内容传输到应用程序服务器,然后进行过滤。

b) 将音译功能移动到 SQL Server 中的 CLR 函数中,并通过 SQL 而不是 Linq 运行查询。

关于c# - Linq - 比较字段的音译值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2743321/

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