【发布时间】:2019-01-23 19:48:40
【问题描述】:
鉴于此示例代码:
var item1 = ("Test1", new List<string>() { "1", "2", "3" });
var item2 = ("Test2", new List<string>() { "1", "2", "3" });
var item3 = ("Test3", new List<string>() { "1", "2", "3" });
var _list = new List<(string ID, List<string> Items)>
{
item1,
item2,
item3
};
var groupby = _list.GroupBy(x => x.Items);
当您在这里调用GroupBy 时,为什么结果不是单个组,因为“项目”列表都是一样的?
【问题讨论】:
-
你说的“
Items的列表都一样”是什么意思?每个项目都有一个不同的List<string> Items(即使它们包含相同的字符串,它们在内存中的位置也不同)。 -
因为每个
Items对象在内存中都是不同的List<>对象,而GroupBy默认查看对象引用。 -
_List 中的每个对象都有一个类型为 new List
() 的属性,其中包含字符串元素“1”、“2”、“3”。既然都是一样的,为什么group by子句不把它们组合在一起呢。