2015-08-05 1 views
-3

У меня есть форма, на которой пользователи могут найти контактную информацию об их коллегах по имени.Данные запроса по иерархической модели

Это моя форма:

<label class="control-label col-sm-2" for="pwd">Name:</label> 
    <div class="col-sm-10"> 
     <input type="text" class="form-control" id="name" name="name"/> 
    </div> 
</div> 
<button class="btn btn-primary" type="submit">Search</button> 

Моя модель выглядит следующим образом:

Person: idPerson, fname, lname, bdate, mail 
Employee: idEmp, hireDate, idPosition, mailCorp, idPerson 

Я хочу найти сотрудников по имени (содержится в Fname или LName) и показать имя и mailCorp, Как я могу получить это с помощью Linq и как показать это в представлении. (Я использую EF)

Я пытаюсь сделать что-то вроде этого, но он не работает

Контроллер

public ActionResult searchOnDirectory(Person per) 
{ 
    var query = from p in Person 
       join e in Employee 
       where e.Employee.fname.Contains(per.name) 
       select new {p.fname, p.lname, e.mailCorp}; 
    return View(model); // I don't know how to send the select result 
} 

Просмотр

@foreach (var per in Model) 
{ 
    <tr> 
     <!--<td></td>--> 
     <td>@per.fname @per.lname</td> 
     <td> @per.Employee.mailCorp </td> 
    </tr> 
}  

PD: извините за ошибки, у меня есть перевести весь мой код, потому что я говорю по-испански

+0

Вы собираетесь оставить нас, чтобы угадать, что вы пробовали до сих пор? –

+0

Непонятно? :/ – JPierre

+0

Покажите нам свой код - что вы пробовали. –

ответ

0

Непрошеный, но я думаю, что это то, что вы пытаетесь чтобы получить, вам не хватает on в вашем запросе.

var query = from p in Person 
       join e in Employee      
       on p.idPerson equals e.idPerson 
       where p.idPerson equals per.Name 
       select new {p.fname, p.lname, e.mailCorp}; 

Если вы просто ищете человека на основе идентификатора, почему бы не просто запросить его?