C# 实体查询中的If-Else语句
我试图在实体查询中生成if-else语句,代码如下:C# 实体查询中的If-Else语句,c#,entity-framework,if-statement,C#,Entity Framework,If Statement,我试图在实体查询中生成if-else语句,代码如下: var asset = dbContext.Set<Asset>() .Include(x => x.Item) .Include(x => x.Item.ItemDetailSubCategory) .Include(x => x.AssetCurrentStatus) .Include(x => x.AssetCurrentStatus.AssetCondition)
var asset = dbContext.Set<Asset>()
.Include(x => x.Item)
.Include(x => x.Item.ItemDetailSubCategory)
.Include(x => x.AssetCurrentStatus)
.Include(x => x.AssetCurrentStatus.AssetCondition)
.Include(x => x.Currency)
.Include(x => x.AssetCurrentStatus.AssetAccessories)
.Where(x => x.AssetCurrentStatus.Room.Floor.IsActive == true)
.Where(x => x.AssetCurrentStatus.Room.Floor.Building.IsActive == true)
.Where(x => x.AssetCurrentStatus.Room.IsActive == true)
.ToList();
var-asset=dbContext.Set()
.包括(x=>x.Item)
.Include(x=>x.Item.itemDetails子类别)
.Include(x=>x.AssetCurrentStatus)
.Include(x=>x.AssetCurrentStatus.AssetCondition)
.包括(x=>x.货币)
.Include(x=>x.AssetCurrentStatus.AssetAccessories)
.Where(x=>x.AssetCurrentStatus.Room.Floor.IsActive==true)
.Where(x=>x.AssetCurrentStatus.Room.Floor.Building.IsActive==true)
.Where(x=>x.AssetCurrentStatus.Room.IsActive==true)
.ToList();
现在我期待着这样的事情:
var asset = dbContext.Set<Asset>()
.Include(x => x.Item)
.Include(x => x.Item.ItemDetailSubCategory)
.Include(x => x.AssetCurrentStatus)
.Include(x => x.AssetCurrentStatus.AssetCondition)
.Include(x => x.Currency)
.Include(x => x.AssetCurrentStatus.AssetAccessories)
if(x.AssetCurrentStatus.AssetLocation != null)
{
.Where(x => x.AssetCurrentStatus.Room.Floor.IsActive == true)
.Where(x => x.AssetCurrentStatus.Room.Floor.Building.IsActive == true)
.Where(x => x.AssetCurrentStatus.Room.IsActive == true)
}
else
{
.ToList()
}
var-asset=dbContext.Set()
.包括(x=>x.Item)
.Include(x=>x.Item.itemDetails子类别)
.Include(x=>x.AssetCurrentStatus)
.Include(x=>x.AssetCurrentStatus.AssetCondition)
.包括(x=>x.货币)
.Include(x=>x.AssetCurrentStatus.AssetAccessories)
如果(x.AssetCurrentStatus.AssetLocation!=null)
{
.Where(x=>x.AssetCurrentStatus.Room.Floor.IsActive==true)
.Where(x=>x.AssetCurrentStatus.Room.Floor.Building.IsActive==true)
.Where(x=>x.AssetCurrentStatus.Room.IsActive==true)
}
其他的
{
托利斯先生()
}
有没有办法做到这一点?
提前感谢嗯,
如果
没有意义,因为您希望在每个资产上应用该逻辑,而不是只应用一次。因此,您需要将其应用于查询本身:
var asset = dbContext.Set<Asset>()
.Include(....)
.Where(x => x.AssetCurrentStatus.AssetLocation == null
|| (x.AssetCurrentStatus.Room.Floor.IsActive
&& x.AssetCurrentStatus.Room.Floor.Building.IsActive
&& x.AssetCurrentStatus.Room.IsActive))
.ToList();
var-asset=dbContext.Set()
.包括(……)
.Where(x=>x.AssetCurrentStatus.AssetLocation==null
||(x.AssetCurrentStatus.Room.Floor.IsActive)
&&x.AssetCurrentStatus.Room.Floor.Building.IsActive
&&x.AssetCurrentStatus.Room.IsActive)
.ToList();
连续的
&
与连续的相同,其中嗯,if
没有意义,因为您希望在每个资产上应用该逻辑,而不是只应用一次。因此,您需要将其应用于查询本身:
var asset = dbContext.Set<Asset>()
.Include(....)
.Where(x => x.AssetCurrentStatus.AssetLocation == null
|| (x.AssetCurrentStatus.Room.Floor.IsActive
&& x.AssetCurrentStatus.Room.Floor.Building.IsActive
&& x.AssetCurrentStatus.Room.IsActive))
.ToList();
var-asset=dbContext.Set()
.包括(……)
.Where(x=>x.AssetCurrentStatus.AssetLocation==null
||(x.AssetCurrentStatus.Room.Floor.IsActive)
&&x.AssetCurrentStatus.Room.Floor.Building.IsActive
&&x.AssetCurrentStatus.Room.IsActive)
.ToList();
连续的&&
与连续的相同,其中
您可以试试这个
var-asset=dbContext.Set()
.包括(x=>x.Item)
.Include(x=>x.Item.itemDetails子类别)
.Include(x=>x.AssetCurrentStatus)
.Include(x=>x.AssetCurrentStatus.AssetCondition)
.包括(x=>x.货币)
.Include(x=>x.AssetCurrentStatus.AssetAccessories)
.Where(x=>x.AssetCurrentStatus.AssetLocation!=null?
x、 AssetCurrentStatus.Room.Floor.IsActive==true&&x.AssetCurrentStatus.Room.Floor.Building.IsActive==true&&x.AssetCurrentStatus.Room.IsActive==true:
正确);
您可以试试这个
var-asset=dbContext.Set()
.包括(x=>x.Item)
.Include(x=>x.Item.itemDetails子类别)
.Include(x=>x.AssetCurrentStatus)
.Include(x=>x.AssetCurrentStatus.AssetCondition)
.包括(x=>x.货币)
.Include(x=>x.AssetCurrentStatus.AssetAccessories)
.Where(x=>x.AssetCurrentStatus.AssetLocation!=null?
x、 AssetCurrentStatus.Room.Floor.IsActive==true&&x.AssetCurrentStatus.Room.Floor.Building.IsActive==true&&x.AssetCurrentStatus.Room.IsActive==true:
正确);
这给了我一个错误,先生说运算符&&不能应用于boolyeah的操作数类型这是真的,我的一个属性是可为空的bool,我确实把==设置为真,谢谢先生这给了我一个错误先生说运算符&&不能应用于boolyeah的操作数类型这是真的,我的一个属性是可为null的bool,我确实把==设置为true,谢谢,先生