Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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/5/sql/85.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
Mysql 如何按两个id对linq查询进行分组_Mysql_Sql_Sql Server_Linq_Linq To Sql - Fatal编程技术网

Mysql 如何按两个id对linq查询进行分组

Mysql 如何按两个id对linq查询进行分组,mysql,sql,sql-server,linq,linq-to-sql,Mysql,Sql,Sql Server,Linq,Linq To Sql,如何使用两个id的group;我有这样的数据 empid: 1, usrid: 1, profid: 1 empid: 1, usrid: 1, profid: 2 empid: 2, usrid: 1, profid: 5 我写过这样的问题 var query = (from i in data group i by new { i.empid, i.usrid} into g select new {

如何使用两个id的group;我有这样的数据

empid: 1, usrid: 1, profid: 1
empid: 1, usrid: 1, profid: 2
empid: 2, usrid: 1, profid: 5
我写过这样的问题

var query = (from i in data
         group i by new { i.empid, i.usrid} into g
         select new {                         
         profileid = g.Select(z=>z.profileid).ToArray()                         
         }).ToArray();
现在对于empid:1和usrid:1,我想将概要文件id作为1,2的数组来获取 对于empid:2和usrid:1,我想把prof-id设为5

但是我得到了每个记录中的所有三个值,比如1,2,5


如何使用linq实现这一点我发现分步执行时更容易看到发生了什么

首先将数据分组

var grouped = data.GroupBy(d => new { d.empid, d.userid });
然后选择结果

var results = grouped.Select(g => g.Select(d => d.profid).ToArray());
每个g是由一对empid和userid设置密钥的组。该组是类实例的集合。所以上面的语句说要从每个组和每个empid userid对中创建一个profid数组。结果证明是正确的

[1, 2]
[5]
这样可以得到所需的数组,但这样会丢失密钥。我不知道你想对结果做些什么,这样也许可以,但可能不行。无论哪种方式,组都包含所需的键和值

解决此问题的另一种方法是使用不同的GroupBy重载,只获取profid作为值

var grouped2 = data.GroupBy(d => new { d.empid, d.userid }, d => d.profid);

这将为您提供一个组,其中密钥是empid和userid对,集合只是profid。这很可能更接近您想要的内容。

它必须包含在您的数据中。你的表演没什么问题。也许您可以显示一个完整的运行代码段,该代码段显示了意外行为。@MitchWheat,Q&a显示了如何按多列分组,但这不是问题所在。@GertArnold yah,您现在就在这里,我明白了,谢谢