如何使用linq合并列表并保留值

时间:2015-03-05 22:40:38

标签: c# linq merge

code    name     number    case
 1       a         5        1
 2       b         9        1
 1       a         6        1
 3       c         8        1
 2       b         1        1
 1       a         1        2
 2       b         3        2
 3       c         1        1

如果情况是1 => number + = number,如果case是2 number- = number,我想用linq创建这个列表

例如,

第三行中的第一行代码为1,大小写为1 number第三行加数字第一行,数字= 11

在第六行cod为1,case为2,则number减去,number = 10

code    name     number    case
 1       a         10       1
 2       b         7        1
 3       c         9        1

1 个答案:

答案 0 :(得分:0)

这将做你想要的:

var result = dataList.GroupBy(x => x.Id).Select(grouping => new
{
     Id = grouping.First().Id,
     Name = grouping.First().Name,
     Number = grouping.Sum(x => x.CaseId == 2 ? -x.Number : x.Number)
});