Skip to main content
 首页 » 编程设计

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

2024年01月29日26zhenyulu

我实际上是在 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 中完全使用正则表达式。