linq中的关节具有正则表达式

Gra*_*een 1 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
(...)
Run Code Online (Sandbox Code Playgroud)

我同意我可以在linq查询的where部分推送RegExp检查,但我想知道是否可以在连接部分?上面的代码需要一个"i equals j"代码结构.

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

有关我的问题的任何建议?

Jon*_*eet 5

它在join子句中是不合适的,因为LINQ中的连接equijoins - 它们检查来自一个序列的某些投影是否等于另一个序列中的投影值.这不是你在这里要做的 - 你只是测试一个依赖于两个值的条件.

where子句更适合这里:

from i in collectiona
from j in collectionb
where Regex.IsMatch(i.name, j.jokered_name)
select ...
Run Code Online (Sandbox Code Playgroud)

不过,我只是刚刚看到,这是LINQ to SQL的-我不知道你是否可以使用正则表达式在LINQ to SQL.