c# - 使用正则表达式连接 linq

标签 c# regex linq join equals

我实际上是在 linqtosql 中使用连接(通过 dblinq)。

我试图在 linq 查询的连接部分包含一个正则表达式。

from i in collectiona
join j in collectionb on Regex.IsMatch(i.name, j.jokered_name) equals true
(...)

我同意我可以将 RegExp 检查推送到 linq 查询的 where 部分,但我想知道是否可以在连接部分进行检查?上面的代码需要一个“i 等于 j”的代码结构。

我认为要执行的一件事是重写 Equals(),它将包含 RegEx.IsMatch() 内容并在连接部分放置一个简单的 i 等于 j。

对我的问题有什么建议吗?

最佳答案

这在连接子句中是不合适的,因为 LINQ 中的连接是 equijoins - 它们检查一个序列中的某个投影是否等于另一个序列中的投影值。这不是您要在此处尝试执行的操作 - 您只是在测试一个条件,它同时依赖于两个值。

where 子句更适合这里:

from i in collectiona
from j in collectionb
where Regex.IsMatch(i.name, j.jokered_name)
select ...

但是,我只是刚刚看到这是 LINQ to SQL - 我不知道您是否可以在 LINQ to SQL 中完全使用正则表达式。

关于c# - 使用正则表达式连接 linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2934675/

相关文章:

c# - 未找到 Stripe Webhook Controller

C# StreamWriter - 复制内存时检测到可能的 I/O 竞争条件

c# - 何时在 LINQtoObjects 上使用带有 lambda 的扩展方法来过滤集合?

java - 如何使用 Java 正则表达式从字符串中解析此 CSV 列表?

c# - RavenDB - 使用 OR 过滤器构建动态查询

c# - 如何将 Func<T,bool> 转换为 Expression<Func<T,bool>>

c# - Parallel.ForEach 中长时间运行进程的进度条

c# - .Net 文件流 - 句柄与路径

javascript - 在此示例中,正则表达式在空格后匹配

python - python 中的 Pushover 确认