Моя первая таблица:
Имя первой таблицы: Контакты
ContactID (PK)
Имя
Фамилия
Компания
Имя второй таблицы: телефоны
ContactID (FK)
PhoneType
PhoneNumber
Моя модель просмотра
public class ContactVM2
{
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Company { get; set; }
public string PhoneType { get; set; }
public string PhoneNumber { get; set; }
}
Класс репозитория
public class ContactRepository
{
ContactsDBEntities dbRepo = new ContactsDBEntities();
public List<ContactVM> GetAllContacts()
{
List<ContactVM> ContactViewList = new List<ContactVM>();
var allContacts = dbRepo.Contacts.ToList();
var allPhones = dbRepo.Phones.ToList();
foreach (var cont in allContacts)
{
foreach (var ph in allPhones)
{
if (cont.ContactID == ph.ContactID)
{
ContactViewList.Add(new ContactVM(){
ContactID =cont.ContactID,
FirstName=cont.FirstName,
LastName=cont.LastName,
Company=cont.Company,
PhoneType=ph.PhoneType,
PhoneNumber=ph.PhoneNumber});
}
}
}
return ContactViewList;
}
}
и Контроллер
public ActionResult Index()
{
ContactRepository contRepo = new ContactRepository();
var allContacts = contRepo.GetAllContacts().ToList();
return View(allContacts);
}
У меня есть следующие данные в таблицах контактов
ContactID FirstName LastName Company
1 Bill Gates Microsoft
и в таблице телефонов
ContactID PhoneType PhoneNumber
1 Home 1111
1 Office 2222
Я получаю следующий результат: 1 Дом Билла Гейтса 1111
1 Офис Билла Гейтса 2222
Контактные данные повторяются.
Мне нужен следующий результат
1 Bill Gates Home 1111
Office 2222
Я также пробовал отслеживать изменения в представлении
<td style="border:2px solid Blue;">
@{
foreach (var parent in Model.Where(x=>x.ContactID==item.ContactID).GroupBy(m=>m.PhoneNumber))
{
foreach( var itm in parent )
{
@itm.PhoneNumber <br />
}
}
}
</td>
<td style="border:2px solid red;">
@{
foreach (var parent in Model.Where(x=>x.ContactID==item.ContactID).GroupBy(m=>m.PhoneType))
{
foreach( var itm in parent )
{
@itm.PhoneType <br />
}
}
}
</td>
Но он по-прежнему повторяет запись снова.
Затем я попробовал внести изменения в ModelView
public List<string> PhoneType { get; set; }
public List<string> PhoneNumber { get; set; }
но не получил результатов.
Может ли кто-нибудь помочь, приведя простейший пример, поскольку я нахожусь на очень начальном уровне. Код без итерации по телефону в представлении
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ContactID)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Company)
</td>
<td>
@Html.DisplayFor(modelItem => item.PhoneType)
</td>
<td>
@Html.DisplayFor(modelItem => item.PhoneNumber)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>