Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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# 使用列表<;int>;按键作为linq组_C#_Linq_Grouping - Fatal编程技术网

C# 使用列表<;int>;按键作为linq组

C# 使用列表<;int>;按键作为linq组,c#,linq,grouping,C#,Linq,Grouping,这是来自LinqPad(因此是.Dump()) void Main() { var k1=新列表(){1,2,3,4,5}; var k2=新列表(){1,2,3,4,5}; var o1=newa(){k=k1,objectName=“o1”}; var o2=newa(){k=k2,objectName=“o2”}; var l=新列表 我知道为什么会发生这种情况,这是因为列表对象是独立的对象,但我想知道的是,是否有一种方法可以告诉group by使用列表的内容而不是对象实例。我成功地完成了

这是来自LinqPad(因此是.Dump())

void Main()
{
var k1=新列表(){1,2,3,4,5};
var k2=新列表(){1,2,3,4,5};
var o1=newa(){k=k1,objectName=“o1”};
var o2=newa(){k=k2,objectName=“o2”};
var l=新列表


我知道为什么会发生这种情况,这是因为列表对象是独立的对象,但我想知道的是,是否有一种方法可以告诉group by使用列表的内容而不是对象实例。

我成功地完成了以下任务:

var b = l.SelectMany(a => a.k.Select(i =>  new { Key = i, n = a.objectName }))
         .GroupBy(i => i.Key);

我成功地完成了以下几点:

var b = l.SelectMany(a => a.k.Select(i =>  new { Key = i, n = a.objectName }))
         .GroupBy(i => i.Key);

公共静态void Main()
{
var k1=新列表(){1,2,3,4,5};
var k2=新列表(){1,2,3,4,5};
var o1=newa(){k=k1,objectName=“o1”};
var o2=newa(){k=k2,objectName=“o2”};
var l=新列表

公共静态void Main()
{
var k1=新列表(){1,2,3,4,5};
var k2=新列表(){1,2,3,4,5};
var o1=newa(){k=k1,objectName=“o1”};
var o2=newa(){k=k2,objectName=“o2”};

var l=new List

您可以将数组转换为字符串

var b = l.GroupBy(o => string.Join(";", o.k))
         .Select(g => new { Key = g.First().k,
                            n = string.Join(",", g.Select(o => o.objectName)) });

可以将数组转换为字符串

var b = l.GroupBy(o => string.Join(";", o.k))
         .Select(g => new { Key = g.First().k,
                            n = string.Join(",", g.Select(o => o.objectName)) });

您可以使用采用自定义比较器的
GroupBy
方法,并以这种方式检查列表是否相等。下面是一篇解释自定义比较器的文章:(适用于所有使用相等的LINQ方法-从比较的角度来看,GroupBy类似于本文中使用的Distinct)。我找不到好的精确副本(我很确定有很多),但如果你想以重复的方式关闭,这里有一个足够接近的问题可以开始搜索-你可以使用
GroupBy
方法来使用自定义比较器,并以这种方式检查列表是否相等。下面是一篇解释自定义比较器的文章:(适用于所有使用等式的LINQ方法-从比较的角度来看,GroupBy类似于本文中使用的Distinct)。我找不到好的精确副本(我很确定有很多),但如果您想以副本形式关闭,这里有一个足够近的问题可以开始搜索-