По сути, вы пытаетесь написать эквивалент SQL bArg = tArg OR bArg LIKE '%|' + tArg
.Я считаю, .EndsWith
должно достичь этого для вас.К сожалению, невозможно использовать его в части join
, но вы можете использовать его в части where
.
var result =
from b in collection1
from t in collection2
where b.arg == t.arg || b.arg.EndsWith("|" + t.arg)
select new { B = b, T = t };
Предложение where
здесь должно быть примерно эквивалентно вашему SQLquery.
Поскольку вы не видели, как a == b || EndsWith
имеет отношение, рассмотрите следующие примеры, почему он работает:
abc|def|ghi
присоединение ghi
ghi
присоединение ghi
Если мы используем ваш метод, мы получим следующие результаты от вашего Substring
:
abc|def|ghi
становится ghi
ghi
, поскольку он не содержит |
получает индекс -1, который с + 1 делает его 0, таким образом, он просто становится ghi
Теперь, что произойдет, если мы используем ==
и EndsWith
?
"abc|def|ghi"
не == "ghi"
, но оно заканчивается на "|ghi"
, поэтому оно удовлетворяет условию. "ghi"
делает == "ghi"
, поэтому он удовлетворяет условию.
Попробуйте онлайн