MVC3、C#、.NET4、EF5 を使用しています。ASP.NET メンバーシップ プロバイダーを使用しています。モデルは 1 ユーザーの多くのロールをサポートしていますが、ユーザーごとに 1 つのロールを使用しています。
ユーザー情報を抽出するときに、LINQ クエリでこの 1 つのロールを抽出する必要があります。要するに、特定のユーザーの「First()」ロール レコードが必要なだけです。
AspNet.Membership テーブルと 1 対 1 で対応する Application User テーブルがあります。
次のようなものです:
List<StdOrgUser> myUsers = Model.Select(i => new StdOrgUser(){
Id=i.Id,
Rolename = i.Aspnet_Membership.Aspnet_Users.Aspnet_Roles.FirstOrDefault().RoleName
}).ToList();
また、Intellisense により上記のコードを記述できましたが、実際には実行されません。このレコードのユーザー詳細とともに、この 1 つのロール名の値を取得するにはどうすればよいですか? このモデルは表示のために WebGrid に入ります。
編集:
私の修正されたコード、null テスト前のアドバイス!
var myUsers = Model.Select(i => new{
Id = i.Id,
Firstname = i.Firstname,
initials = i.Initials,
Lastname = i.Lastname,
Username = i.Aspnet_Membership.Aspnet_Users.UserName,
RoleName = i.Aspnet_Membership.Aspnet_Users.Aspnet_Roles.FirstOrDefault().RoleName,
Organisation = i.StdOrg.Name
}).ToList();
EDIT2:ヌルテストを投稿:
var myUsers = Model.Select(i => new {
Id = i.Id,
Firstname = i.Firstname,
initials = i.Initials,
Lastname = i.Lastname,
Username = i.Aspnet_Membership.Aspnet_Users.UserName,
RoleName = i.Aspnet_Membership.Aspnet_Users.Aspnet_Roles.Any() ? i.Aspnet_Membership.Aspnet_Users.Aspnet_Roles.FirstOrDefault().RoleName : "No Roles",
Organisation = i.StdOrg.Name
}).ToList();
次に、この 2 番目のモデルを webgrid にフィードします。