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.
有关我的问题的任何建议?
它在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.