2016-05-30 3 views
0

У меня есть модель, которая не очень проста и понятна, и я хочу получить определенные данные из нее, но я не слишком хорошо знаком с Linq или какой командой использовать. Вот код модели:Использование Linq для получения значения из модели asp.net mvc

public class RootObject 
{ 
    public string _id { get; set; } 
    public string court { get; set; } 
    public string type { get; set; } 
    public string caption { get; set; } 
    public Case cases { get; set; } 
    public Dates dates { get; set; } 
    public Judge judge { get; set; } 
    public Balance balance { get; set; } 
    public Sentence sentence { get; set; } 
    public List<Charge> charges { get; set; } 
    public List<Participant> participants { get; set; } 
} 

public class Participant 
{ 
    public string _id { get; set; } 
    public string type { get; set; } 
    public int partyNumber { get; set; } 
    public Name2 name { get; set; } 
    public Address address { get; set; } 
    public Phone phone { get; set; } 
    public Birth birth { get; set; } 
    public List<Cost> costs { get; set; } 
    public List<Receipt> receipts { get; set; } 
} 

public class Name2 
{ 
    public string prefix { get; set; } 
    public string first { get; set; } 
    public string middle { get; set; } 
    public string last { get; set; } 
    public string suffix { get; set; } 
    public string company { get; set; } 
    public string full { get; set; } 
} 

Я в основном пытаюсь добраться до первого и последнего имени или полного имени в этом классе Имя2 через корневой объект и участников список. Я использую asp.net 5 и mvc 6 и linq для вызова объектов, но, похоже, не могу получить значение из-за неправильности моего linq. Модель передается как в IEnumerable списке класса представления, а вот код, который используется, чтобы попытаться получить имя:

@foreach (var item in Model) 
{ 
    @item.participants.Select(i => i.name.full); 
} 

Любая помощь будет оценена.

Спасибо за ваше время

+0

Хотите отображать все имена как одну строку имен? – Andrei

+0

извинения за то, что не ясно об этом. Я хочу показать одно имя для каждой записи. –

ответ

2

Извините за поздний ответ, но эта работа для меня:

@foreach (var item in Model.participants) 
{ 
    <p>@item.name.first</p> 
} 
0

Не совсем понятно, как вы хотите, чтобы показать эти имена, но давайте предположим, что вы хотите их в виде «имя 1, имя 2, имя 3». Тогда это становится:

@String.Join(", ", item.participants.Select(p => p.name.first + " " + p.name.last)) 

Однако, если вы хотите, чтобы показать только одно имя за единицу, скажем, первый, то вы можете использовать First():

@item.participants.First(p => p.name.full) 

Наконец, если список участников может быть пустым по какой-либо причине используйте FirstOrDefault. Это приведет к выводу null для пустого списка, поэтому обязательно обработайте его правильно!

1

Попробуйте это:

@foreach (var item in Model) 
{ 
    @foreach (var item2 in item.participants) 
    { 
     <p>@item2.name.full</p> 
     <p>@item2.name.first</p> 
     <p>@item2.name.last</p> 
    } 
} 

Другой вариант - одно имя для каждой записи:

@foreach (var item in Model) 
{ 
    <p>@item.participants.FirstOrDefault()?.name.full</p> 
    <p>@item.participants.FirstOrDefault()?.name.first</p> 
    <p>@item.participants.FirstOrDefault()?.name.last</p> 
} 
Смежные вопросы