я следующий запрос LINQ, что создать левое соединение между двумя таблицами:Комбинат присоединиться String.Contains в Linq запрос
var joinResultRows = from leftTable in dataSet.Tables[leftTableName].AsEnumerable()
join
rightTable in dataSet.Tables[rightTableName].AsEnumerable()
on leftTable.Field<string>(leftComparedColumnName) equals rightTable.Field<string>(rightComparedColumnName)
into leftJoinedResult
select new { leftTable, leftJoinedResult };
я хочу, чтобы получить строки, которые отвечают на это: значение строки в В левой колонке содержится строковое значение в правом столбце.
я попытался это:
var joinResultRows = from leftTable in dataSet.Tables[leftTableName].AsEnumerable()
join
rightTable in dataSet.Tables[rightTableName].AsEnumerable()
on leftTable.Field<string>(leftComparedColumnName).Contains(rightTable.Field<string>(rightComparedColumnName)) equals true
into leftJoinedResult
select new { leftTable, leftJoinedResult };
, но это не работает причина rightTable не признается в левой части соединения.
Как создать соединение, результатом которого является String.Contains, выполнять ли я в предложении 'where' или в разделе 'On'?
+1 для SelectMany - LINQ поддерживает только «equi-joins», которые объединяют элементы в последовательности с помощью равенства ключей. – dahlbyk
selectMany - это то, о чем я не думал, спасибо. он находит совпадения, но не решает мою проблему, , потому что мне нужна LEFT JOIN, которая создает новую объединенную таблицу или по крайней мере анонимный тип, который имеет две таблицы - левую и объединенную (например, в моем примере выше). после выполнения моего запроса выше, я построил таблицу результатов вручную, используя leftTable, leftJoinedResult. Могу ли я сделать SelectMany слева? – Rodniko
Я считаю, что нет реального способа добиться того, что вы пытаетесь использовать с LinQ и анонимными типами. Однако существует ряд обходных путей, и я постараюсь выработать для вас в вышеупомянутом сообщении. –