Вопрос

Я новичок в LINQ, и (к сожалению) мне нужно преобразовать какую -то запутанную команду SQL в LINQ. В моей базе данных есть две простые таблицы. Первый - это имена (Cols «имя» и «nameid»), другая таблица содержит псевдонимы (Cols «Ник», «Никид», «fk_nameid»). Каждое прозвище имеет идентификатор и внешний ключ, указывающий на реальное имя (идентификатор имени).

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

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

Насколько я видел после Googling, «как» и «присоединение» в команде SQL могут создать сложный LINQ: Можете ли вы помочь мне и сказать мне, какое выражение LINQ будет равным той команде SQL, которую я использовал до сих пор? Есть ли что -нибудь, чтобы обойти LINQ и использовать набор данных, вместо этого DataTables? Я полный LINQ-NOOB:

Это было полезно?

Решение

На самом деле это очень похоже:

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 (я считаю).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top