2011-11-23 53 views
0

如何编写将在GridView中显示用户名而不是用户ID的linq查询。我将如何编写将在GridView中显示用户名而不是用户ID的linq查询

var q = from u in entities.problems 
         join a in entities.my_aspnet_membership on u.user_id equals a.userId 
         join c in entities.my_aspnet_users on a.userId equals c.id 
         where c.id == a.userId 
         select new { u.problem_id, c.name, u.problem_description, u.problem_reported_datetime, u.problem_history}; 

我在看什么时候在网站上只是为了查看他们提交的问题而忽略登录。

回答

2

仅绑定显示结果所需的那些列。关闭AutoGeneratedColumns并添加BoundField列。

1

有几个与您的查询的问题:

  1. 其中一部分(where c.id == a.userId)没有意义。
  2. 加入会员表 - 为什么需要?如果用户有多个角色,此连接可能会为您提供多行(如果用户具有多个角色) - 消除不需要的情况。

例如,

var q = from u in entities.problems 
         join c in entities.my_aspnet_users on u.user_id equals c.id 
         select new { 
           u.problem_id, c.name, u.problem_description, 
           u.problem_reported_datetime, u.problem_history 
         }; 

这会给你所有的问题与用户名一起 - 格列有"name"列绑定。

如果你想列出只有登录用户的问题,那么你必须添加的地方,如where u.user_id = currentUserId其中currentUserId变量将保存登录用户的值。

+0

谢谢,我用你的解决方案的一部分添加了 var currentName = Page.User.Identity.Name;然后将其添加到where c.name == currentName。不是一段清晰的代码,但现在对时间敏感。 – Postonoh

相关问题