我实际上是在 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/