2016-12-15 9 views
-1

MVC5を使用して割り当てを行っていますが、Linqを使用してクエリを作成しようとしていますが、ログインしたユーザー "StudentId"が "AspNetUsers"テーブルから返されます。コードこれは、に文字列値を設定している、mvc5のクエリで値の代わりに列名が返される

string currentUser = User.Identity.GetUserId(); 
      string getStudentId = (from a in db.Users 
            where a.Id.Equals(currentUser) 
            select a.StudentId).ToString(); 

である私はこれを行う試してみて、「StudentId。」これは列の名前です。 (IDは、デフォルトのAspNetUsersテーブルのデータ型で、nvarchar(128)です)。私がどこに間違っているかについての助けは大いに感謝しています。

+0

クエリは、単一のアイテムではなく、「StudentId」のコレクションを返します。 '.ToString()'を呼び出す前に '.FirstOrDefault()'が必要です –

答えて

2

あなたは最初のクエリを実行する必要があります:

string getStudentId = (from a in db.Users 
           where a.Id.Equals(currentUser) 
           select a.StudentId).First().ToString(); 
+0

私は既に提案したコードを試しましたが、それでも列名を返します。 – Kevin

+0

"StudentId"はデータベースのテーブルまたはUsersテーブルの列ですか? –

+0

これはユーザーテーブルの列です – Kevin

0

一つの解決策は、

string currentUser = User.Identity.GetUserId(); 
string studentId; 
studentId=db.Users.SingleOrDefault(o=>o.Id==currentUser).Select(o=>o.StudentId.ToString()); 
+0

これを実装しようとしましたが、applicationUserでselectに値がないというエラーが発生しました – Kevin

+0

この場合の正しい構文は次のようになります。 studentId = db.Users.SingleOrDefault(o => o.Id == currentUser).StudentId .ToString(); –

0

なる可能性があります、私は以下の軽微な変更で、あなたのコードを試してみました:(私は私とあなたのStudentId列を置換 UserName列、ビューページに正しいユーザー名が表示されます)

 string currentUser = User.Identity.GetUserId(); 
     var getStudentId = (from a in db.Users 
           where a.Id.Equals(currentUser) 
           select a.UserName).FirstOrDefault().ToString(); 

     ViewBag.TestUser = getStudentId; 

[更新]

あなたのStudentId列がUsersテーブルにあると仮定しています。

関連する問題