Я совсем новичок в linq, поэтому, пожалуйста, потерпите меня.
Я работаю над веб-страницей asp.net и хочу добавить «функцию поиска» (текстовое поле, в котором пользователь вводит имя или фамилию или и то, и другое или только их часть и возвращает всю связанную информацию).У меня есть две таблицы («Персона» и «Приложение»), и я хочу отобразить некоторые столбцы из «Персона» (имя и фамилия) и некоторые из «Приложения» (оценка, должность, ...).Я знаю, как я могу сделать это с помощью sql, но я хочу узнать больше о linq, и поэтому я хочу сделать это с помощью linq.
На данный момент у меня есть две основные идеи:
1.)
var person = dataContext.GetTable<Person>();
var application = dataContext.GetTable<Application>();
var p1 = from p in Person
where(p.Name.Contains(tokens[0]) || p.Surname.Contains(tokens[1]))
select new {Id = p.Id, Name = p.Name, Surname = p.Surname}; //or maybe without this line
//I don't know how to do the following properly
var result = from a in Application
where a.FK_Application.Equals(index) //just to get the "right" type of application
//this is not right, but I don't know how to do it better
join p1
on p1.Id == a.FK_Person
2.) Другая идея состоит в том, чтобы просто пройти через «Приложение» и вместо «присоединиться к p1 ...» использовать
var result = from a in Application
where a.FK_Application.Equals(index) //just to get the "right" type of application
join p from Person
on p.Id == a.FK_Person
where p.Name.Contains(tokens[0]) || p.Surname.Contains(tokens[1])
Я думаю, что первая идеялучше для запросов без первого условия "где", которое я также намеревался использовать.Независимо от того, что лучше (быстрее), я до сих пор не знаю, как это сделать с помощью linq.Также в конце я хотел отобразить / выбрать только некоторые части (столбцы) результата (объединенные таблицы + условия фильтрации).
Я действительно хочу знать, как делать такие вещи, используя linq, как я будутакже имеет дело с некоторыми похожими проблемами с локальными данными, где я могу использовать только linq.Может кто-нибудь объяснить мне, как это сделать, я потратил несколько дней, пытаясь выяснить это и искать в Интернете ответы.