如果/然后在Linq声明中

时间:2016-12-01 22:47:53

标签: c# linq

简单来说,我想在某种情况下为一个变量赋一个字符串。我试图在一个全局变量中将if then语句放在linq语句的外部但是然后它运行if / then然后将字符串赋值给变量,然后将其打印出我的excel文件中的每一行产生的。

那么我该怎么做一个类似于这个

的陈述
var status = "";
if(_db.Owners.Select(i => i.Item1) != null && _db.Owners.Select(i => i.Item2) == null)
            {
                status = "S";
            }

到我的linq语句,看起来与此类似

return _db.Owners
    .Select(owner => new
        {
            CustomerId = owner.Report.CustomerId,
            IdType = status,//I want this statement to print that status S only where the statement is true
        }

3 个答案:

答案 0 :(得分:3)

我假设IdType是一个字符串,如果该语句为false,则要为空。在这种情况下,您可以使用:

return _db.Owners
     .Select(owner => new
         {
             CustomerId = owner.Report.CustomerId,
             IdType = (owner.Item1 != null && owner.Item2 == null) ? "S": string.Empty, 
    }

<强>更新 如果要添加第二个案例,可以执行以下操作:

return _db.Owners
     .Select(owner => new
         {
             CustomerId = owner.Report.CustomerId,
             IdType = (owner.Item1 != null && owner.Item2 == null) 
                     ? "S" : ([second case condition] ? [value] : string.Empty), 
    }

答案 1 :(得分:1)

你可以使用(臭名昭着的)三元运算符?

new {
   CustomerId = owner.Report.CustomerId,
   IdType = yourTestExpressionFromTheIfAbove ? "S" : string.Empty
}

这就是你问的问题吗?您是否只想内联表达式并删除外部(临时)变量?

答案 2 :(得分:0)

我会做这样的事情:

return _db.Owners
    .Select(owner => new
    {
        CustomerId = owner.Report.CustomerId,
        IdType = owner.Item1 != null && owner.Item2 == null ? "S" : [your other value]
    })
    .ToList();

如果记录不符合您的条件,[您的其他值]是您想要的任何状态。