0

データにアクセスしたり、ビューに渡すことができるように設定したりするほど、クエリに問題はありません。

表現はこちら

  var distinctReplies = pd.Project.ProjectDoc
        .SelectMany(i => i.Comment
            .SelectMany(k => k.CommentReply
                .Select(u => u.User)
            ).Distinct()
        ).Select(g => new {FirstName = g.FirstName, LastName = g.LastName, UserID = g.UserID})
        .ToList();

この式の後、同じユーザー モデルから値を取得する別の式と連結したいので、distinctReplies を ViewBag 変数に割り当ててから、それをループ foreach (var user in @ViewBag.distinctReplies)してかみそりビューでこれを実行できるようにします。

ただし、実際に値を取得するには、やらなければなりませんdistinctReplies.Select(i => i.FirstName)。これに対処する方法がわからない。

4

2 に答える 2

1

クエリ結果を入力するためのViewModelオブジェクトを作成することをお勧めします。@foreachループ内のプロパティにアクセスできるようにするため。

モデル

public class UserVM
{
    public int UserID{get; set;}
    public string FirstName {get; set;}
    public string LastName {get; set;}  
}

更新されたクエリ

  var distinctReplies = ....
                .Select(g => new UserVM {FirstName = g.FirstName, 
                                         LastName = g.LastName, 
                                         UserID = g.UserID}).ToList();

次に、ビューで、にキャストを追加する必要がありますIEnumerable<UserVM>

意見

@foreach (var user in (IEnumerable<UserVM>) ViewBag.distinctReplies)
于 2013-01-22T20:13:31.073 に答える
1

これを使って:

@foreach (var reply in (IEnumerable)ViewBag.distinctReplies) 
{
}

のインスタンスを列挙することはできませんdynamicIEnumerableステートメントを許可するには、 にキャストします。

より完全な説明については、この質問を参照してください。

于 2013-01-22T18:51:30.570 に答える