从Linq Query获取结果

本文关键字:结果 获取 Query Linq | 更新日期: 2023-09-27 18:00:00

我正在尝试检查IsAdmin是否为true,这是一个bool。如果为true,则会在gridview EditItemTemplate中选中一个复选框。

查询是指网格视图处于编辑模式,并且正在编辑的用户已经是管理员。如果这是真的,则需要选中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 Query获取结果

您是否尝试在GridView模板中使用CheckBox,并将其Checked属性设置为绑定到IsAdmin值,类似于以下内容:

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

编辑:

对不起,我刚刚读到管理员不小心删除了自己的权限。如果我在你的靴子里,我不会让这件事发生。管理员不能删除自己的权限。这样可以确保至少存在1个管理员。

此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
    }
}

抱歉,但我不喜欢像linq这样的sql,所以我这样写。希望它会有帮助。

result将通过包含属性IsAdmin的对象返回一个IEnumerable。如果您想对每个具有IsAdmin == true的元素执行操作,请执行以下操作:

var resultsWithAdminIsTrue = from r in result
                             where r.IsAdmin
                             select r;
foreach (var r in resultsWithAdminIsTrue)
{
    /* Do action */
}