从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,所以我写了这样。希望它会有帮助。
答
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个管理员存在。
任何有关投票的评论? – Maris 2013-02-19 10:26:30