Преобразование SQL с "внутренним соединением" и "подобными" в LINQ - PullRequest
0 голосов
/ 19 февраля 2012

Я новичок в LINQ, и (к сожалению) мне нужно конвертировать некоторые запутанные команды sql в Linq. В моей базе данных есть две простые таблицы. Первая содержит имена (столбцы «Name» и «NameID»), другая таблица содержит псевдонимы (столбцы «Nick», «NickID», «FK_NameID»). Каждый псевдоним имеет идентификатор и внешний ключ, указывающий на настоящее имя (идентификатор имени).

Используя C #, этот код использовался для извлечения любого псевдонима, содержащего в нем «SomeString»:

comm = new SqlCommand("SELECT Name FROM Names INNER JOIN Nicks ON NameID = FK_NameID AND Nick LIKE '%" + SomeString + "%'", Connection);

Насколько я видел после поиска в Google, "Like" и "Join" в команде SQL могут привести к сложным Linq: \ Можете ли вы мне помочь и скажите, какое выражение LINQ будет равно той команде SQL, которую я использовал до сих пор ? Есть ли какая-нибудь возможность обойти Linq и использовать вместо нее DataSet, DataTables? Я полный Linq-нуб: \

1 Ответ

2 голосов
/ 19 февраля 2012

Это довольно похоже на самом деле:

var query = from name in names
            join nick in nicks on name.NameId equals nick.FK_NameId
            where nick.Nick.Contains(SomeString)
            select name.Name;

Вам следует подумать о названиях столбцов - FK_NameId будет лучше, чем NameId (по моему мнению).

...