Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.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/8/linq/3.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# 两列分组和_C#_Linq - Fatal编程技术网

C# 两列分组和

C# 两列分组和,c#,linq,C#,Linq,我在一个列表中有两列。我想通过分组来收集这些列。但是我不能做分组工作。如果你能帮助我,我很高兴 void Main() { List<MyList> lists = new List<MyList>(); lists.Add(new MyList { bankCode = "102 01 001", fCode = "100 01 001", Money = 500 }); lists.Add(new MyList { bankCode = "10

我在一个列表中有两列。我想通过分组来收集这些列。但是我不能做分组工作。如果你能帮助我,我很高兴

void Main() {
    List<MyList> lists = new List<MyList>();
    lists.Add(new MyList { bankCode = "102 01 001", fCode = "100 01 001", Money = 500 });
    lists.Add(new MyList { bankCode = "102 01 001", fCode = "101 01 001", Money = 600 });
    lists.Add(new MyList { bankCode = "102 01 001", fCode = "120 01 001", Money = 700 });
    lists.Add(new MyList { bankCode = "102 01 001", fCode = "320 01 001", Money = 200 });
    lists.Add(new MyList { bankCode = "102 01 001", fCode = "100 01 001", Money = -100 });
    lists.Add(new MyList { bankCode = "102 01 001", fCode = "101 01 001", Money = 400 });
    lists.Add(new MyList { bankCode = "102 01 001", fCode = "320 01 001", Money = -200 });
    lists.Add(new MyList { bankCode = "102 01 001", fCode = "120 01 001", Money = -200 });

    var myList = lists.GroupBy(l => new { l.bankCode, l.fCode }).Select(l => new
    {
        groupCode = ??,
        plusMoney = l.Sum(k => k.Money > 0 ? k.Money : 0),
        negativeMoney = l.Sum(k => k.Money < 0 ? k.Money : 0)
    }).Dump();
    }
    public class MyList {
        public string bankCode { get; set; }
        public string fCode { get; set; }
        public decimal Money { get; set; }        
    }
void Main(){
列表=新列表();
添加(新的MyList{bankCode=“102 01 001”,fCode=“100 01 001”,Money=500});
添加(新的MyList{bankCode=“102 01 001”,fCode=“101 01 001”,Money=600});
添加(新的MyList{bankCode=“102 01 001”,fCode=“120 01 001”,Money=700});
添加(新的MyList{bankCode=“102 01 001”,fCode=“320 01 001”,Money=200});
添加(新的MyList{bankCode=“102 01 001”,fCode=“100 01 001”,Money=-100});
添加(新的MyList{bankCode=“102 01 001”,fCode=“101 01 001”,Money=400});
添加(新的MyList{bankCode=“102 01 001”,fCode=“320 01 001”,Money=-200});
添加(新的MyList{bankCode=“102 01 001”,fCode=“120 01 001”,Money=-200});
var myList=lists.GroupBy(l=>new{l.bankCode,l.fCode})。选择(l=>new
{
组码=??,
plusMoney=l.Sum(k=>k.Money>0?k.Money:0),
negativeMoney=l.Sum(k=>k.Money<0?k.Money:0)
}).Dump();
}
公共类MyList{
公共字符串银行代码{get;set;}
公共字符串fCode{get;set;}
公共十进制货币{get;set;}
}
我要求的预期结果是


非常感谢

您似乎希望创建银行代码总计和fCode总计:

var myList = lists.GroupBy(l =>l.bankCode).Concat(lists.GroupBy(l=>l.fCode)).Select(l => new
    {
        groupCode = l.Key,
        plusMoney = l.Sum(k => k.Money > 0 ? k.Money : 0),
        negativeMoney = l.Sum(k => k.Money < 0 ? k.Money : 0)
    });
var myList=lists.GroupBy(l=>l.bankCode).Concat(lists.GroupBy(l=>l.fCode))。选择(l=>new
{
groupCode=l.键,
plusMoney=l.Sum(k=>k.Money>0?k.Money:0),
negativeMoney=l.Sum(k=>k.Money<0?k.Money:0)
});

如果按
new{l.bankCode,l.fCode}
分组,则根据两种代码的唯一组合进行分组。由于所有银行代码的示例相同,因此剩余的有效分组与仅在fCode上相同。通过
concat
启用每个代码的groupby,您可以分别获得每个代码,如示例图像所示。因为每个组都有一个字符串作为键,所以groupCode就是分组键。

您想在
groupCode
中得到什么?我想您想要
l.key
l.key.fCode
那里。当我想向组中添加另一个元素时,我该怎么做?例如,当我添加一个名为'month'@Me.name的对象时,可以添加另一个
Concat
(在选择之前)和一个groupby on month,但如果month是一个数值,则它必须是month.ToString()(或该月的另一个字符串表示形式)对于具有相同签名且concat有效的组,或者如果您希望按bankCode和MOUNT以及fCode和MOUNT分组,您可以将各个
GroupBy更改为包含MOUNT,或者在concat之后添加一个group by,该concat在MOUNT.lists.add上添加一个额外的group by(新MyList{bankCode=“102 01 001”,fCode=“100 01 001”,货币=500,月份=10});我在这里添加了一个项目,为期一个月。这是一个数值。我尝试添加时出错。实际上,这些项目都在那里。我通过缩短示例使其清晰而给出@我的名字