我将如何编写linq查询,在网格视图中显示用户名而不是userID

时间:2011-11-23 04:06:27

标签: c# asp.net linq

如何编写在网格视图中显示用户名而不是userID的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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您的查询存在以下几个问题:

  1. 哪一部分(where c.id == a.userId)没有意义。
  2. 加入会员表 - 为什么需要?这种连接可能会为一个问题提供多行(如果用户有多个角色) - 如果不需要则消除。
  3. 例如,

    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变量将保存登录用户的值。