Преобразование SQL с "внутренним объединением" и "подобными" в LINQ

Я новичок в 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 ответ

Решение

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

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 (по-моему).

Другие вопросы по тегам