如何将此转换为使用Linq到数据集?

时间:2013-10-21 05:14:22

标签: c# linq

如何将此转换为使用Linq到数据集?

foreach (Row row in Rows) 
{ 
    if (row.material> 0) 
        sumtid += row.time * row.material; 
    else 
        sumtid += row.time; 
} 

2 个答案:

答案 0 :(得分:7)

var sumtid = Rows.Sum(x => x.time * (x.materials > 0 ? x.materials : 1));

var sumtid = Rows.Sum(x => x.materials > 0 ? x.time * row.materials : x.time);

我假设您的Rows变量为IEnumerable<Row>

修改

解决问题的另一种方法:

var sumtid = Rows.Select(x => x.materials > 0 ? x.time * row.materials : x.time)
                 .Sum();

答案 1 :(得分:2)

除了@ MarcinJuraszek的回答,您还可以按原样使用您的代码:

var sumtid = Rows.Sum(row =>
    {
        if (row.material> 0) 
            return row.time * row.material; 
        else 
            return row.time; 
    });