2016-05-30 10 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; } 
} 

私は基本的にルートオブジェクトと参加者リストをそのName2はクラスで最初と最後の名前またはフルネームを取得しようとしています。私はオブジェクトを呼び出すためにasp.net 5とmvc 6とlinqを使用していますが、間違っている私のlinqのために値を取得するように見えることはできません。モデルは、ビュークラスにIEnumerableをリストのように渡され、ここで名前を試してみて、取得するために使用するコードです:任意の助けをいただければ幸いです

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

が。

はあなたの時間

+0

は、あなたがしたいですかすべての名前を単一の文字列として表示するには? – Andrei

+0

そのことについてはっきりしていないことをお詫び申し上げます。私は各エントリに1つの名前を表示したい。 –

答えて

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)) 

あなたはしかし、項目ごとに1つの名前だけを表示したい場合は、最初のものを言う、あなたは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> 
    } 
} 

その他のオプション - エントリごとに1名:

@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> 
} 
関連する問題