Linq - 如果为负数,则将int设置为0

时间:2016-10-28 09:11:42

标签: c# linq

我正在使用Linq初始化一个类对象,如果我发现另一个类对象的值是一个减号,我需要设置的值为0,这是现有的代码:

public void fillObject(FillData dataToAdd)
{
    Data data = new Data();

    Data.Items = dataToAdd.maindata
        .select(
            x => new Data.ItemsStruct
                     {
                         parameter1inItemsStruct = x.intno1,
                         parameter1inItemsStruct = x.intno2
                     });
}

intno1intno2可以是任何值,但如果值是负数,我想将其设置为0.

有谁知道如何在LINQ中实现这一目标?我不想做的是直接引用对象中的每个参数并检查/更改其值,我只想用Linq检查/更改值'inline'。

4 个答案:

答案 0 :(得分:4)

您可以使用Math.Max

parameter1inItemsStruct = Math.Max(0, x.intno1),
parameter1inItemsStruct = Math.Max(0, x.intno2)

答案 1 :(得分:1)

使用?: Operator

{
    parameter1inItemsStruct = x.intno1 > 0 ? x.intro1 : 0,
    parameter1inItemsStruct = x.intno2 > 0 ? x.intro2 : 0

}

答案 2 :(得分:0)

尝试:

public void fillObject(FillData dataToAdd)
{
Data data = new Data();

Data.Items = dataToAdd.maindata
.select(x => new Data.ItemsStruct
{

parameter1inItemsStruct = x.intno1<0?0:x.intno1,
parameter1inItemsStruct = x.intno2<0?0:x.intno2

});

}

答案 3 :(得分:-1)

这样的事情:parameter1inItemsStruct = x.intno1 < 0 ? 0 : x.intno1