Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体查询中的If-Else语句_C#_Entity Framework_If Statement - Fatal编程技术网

C# 实体查询中的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)

我试图在实体查询中生成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)
    .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,谢谢,先生