LINQ 根据条件查询条件
LINQ Query condition based on a condition
我有一个 LINQ 查询如下:
var query = from r in Context.Role()
join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId
where r.RoleName != "guests" && r.RoleName != "SystemAdmin"
select rg;
但是,我需要包含一个附加条件,即不应根据外部条件(例如,登录用户是超级用户)排除 SystemAdmin。
按照建议 here,我修改了如下查询:
var query = from r in Context.Role()
join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId
where r.RoleName != "guests" && (userId == 1 || r.RoleName != "SystemAdmin")
select rg;
但即使 userId 不是 1,我仍然可以在输出中看到 SystemAdmin 角色。如何获得所需的输出?
将此代码用于动态 where 条件:
if (printType == "BatchWise")
{
whereCondition = "BatchNo.Equals(@" + 0 + ")";
array[0] = Convert.ToString(printNumber);
}
else
{
whereCondition = "TagNo.Equals(@" + 0 + ")";
array[0] = Convert.ToString(printNumber);
}
using (var inventoryDb = new InventoryDb())
{
var pricingInfo = (from price in invDb.Pricing.AsNoTracking()
where tagDtl.AvailableQuantity > 0
select new
{
PricingNo = price.PricingNo,
............
}).Where(whereCondition, array).ToList();
}
查询如下:
var query = from r in Context.Role()
join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId
where r.RoleName != "guests" && (userId == 1 || (userId> 1 && r.RoleName != "SystemAdmin"))
select rg;
我有一个 LINQ 查询如下:
var query = from r in Context.Role()
join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId
where r.RoleName != "guests" && r.RoleName != "SystemAdmin"
select rg;
但是,我需要包含一个附加条件,即不应根据外部条件(例如,登录用户是超级用户)排除 SystemAdmin。
按照建议 here,我修改了如下查询:
var query = from r in Context.Role()
join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId
where r.RoleName != "guests" && (userId == 1 || r.RoleName != "SystemAdmin")
select rg;
但即使 userId 不是 1,我仍然可以在输出中看到 SystemAdmin 角色。如何获得所需的输出?
将此代码用于动态 where 条件:
if (printType == "BatchWise")
{
whereCondition = "BatchNo.Equals(@" + 0 + ")";
array[0] = Convert.ToString(printNumber);
}
else
{
whereCondition = "TagNo.Equals(@" + 0 + ")";
array[0] = Convert.ToString(printNumber);
}
using (var inventoryDb = new InventoryDb())
{
var pricingInfo = (from price in invDb.Pricing.AsNoTracking()
where tagDtl.AvailableQuantity > 0
select new
{
PricingNo = price.PricingNo,
............
}).Where(whereCondition, array).ToList();
}
查询如下:
var query = from r in Context.Role()
join rg in Context.RoleGroup() on r.RoleId equals rg.FkRoleId
where r.RoleName != "guests" && (userId == 1 || (userId> 1 && r.RoleName != "SystemAdmin"))
select rg;