从Linq查询得到结果

问题描述:

我想检查IsAdmin是否为真,这是一个布尔值。 如果它是真的,那么在gridview EditItemTemplate中检查一个复选框。从Linq查询得到结果

查询是当gridview处于编辑模式,并且正在编辑的用户已经是admin。如果checkBox是真的,那么需要检查checkBox,因为如果他们更新了行并且复选框没有被选中,他们不是长的管理员。

什么,我的想法是,查询应该是能够做到这一点。但不知道如何实现IsAdmin == true。

private void LoadGridEdit() 
{ 
using (dbDataContext _db = new dbDataContext()) 
{ 
    var result = from u in _db.tbl_Users 
        where u.Deleted == false 
       select new 
         { 
          u.UserId, 
          u.UserName, 
          u.Email, 
          u.IsAdmin, 
          u.tbl_ServiceArea.ServiceArea, 
         }; 

    if() 
    { 
     //???? or foreach? 
    } 
    // Bind Here 
} 
} 

我看了一下,尝试了不同的选择,但我不确定。

此LinQ查询将返回IEnumerable对象,您可以使用foreach语句对其进行枚举。

类似的东西:

var result = _db.tbl_Users.Where(u=> u.Deleted == false).Select(e=> new 
        { 
         u.UserId, 
         u.UserName, 
         u.Email, 
         u.IsAdmin, 
         u.tbl_ServiceArea.ServiceArea, 
        }.ToList(); 

foreach(var res in result) 
{ 
    if(res.IsAdmin) 
    { 
    // Do SOmething 
    } 
} 

很抱歉,但我不喜欢这类似于SQL的LINQ,所以我写了这样。希望它会有帮助。

+0

任何有关投票的评论? – Maris 2013-02-19 10:26:30

result将通过包含属性IsAdmin的对象返回IEnumerable。如果你想要做的有IsAdmin == true做如下各元素的动作:

var resultsWithAdminIsTrue = from r in result 
          where r.IsAdmin 
          select r; 

foreach (var r in resultsWithAdminIsTrue) 
{ 
    /* Do action */ 
} 

您是否尝试过在你的GridView模板使用复选框,并设置其Checked属性绑定到IsAdmin值,这样的事情:

<asp:CheckBox ID="chbIsAdmin" runat="server" Checked='<%# Bind("IsAdmin") %>' /> 

编辑:

对不起,我刚刚看了一下管理员删除自己的特权意外。如果我在你的引导,我不会让这件事情发生。管理员无法删除他们自己的权限。这确保至少有1个管理员存在。