var aaa = data.GroupBy(o => o.Date).Select(o => new { o }).ToList();
var bbb = aaa.Select(o => o.Key).ToList();
//There is a error of `Key`
这是否意味着Key
仅允许GroupBy
之后的原始列表。在Key
之后是否可以获得Select
GroupBy
?(当然,我们可以在Key = o.Key
中隐藏Select
此外,
var aaa = data.GroupBy(o => o.Date).Select(o => o.ToList()}).ToList();
如果我们将aaa
更改为二维List
,是否可以获取之前的Key
?
答案 0 :(得分:2)
在您的第一个linq表达式中,在Select
中,您将使用新的匿名对象包装IGrouping
的{{1}}对象。
因此,要在第二行获取GroupBy
属性,您应该:
Key
对于第二个问题,如果您想在这种情况下获得//Original:
var bbb = aaa.Select(o => o.Key).ToList();
//Change to:
var bbb = aaa.Select(o => o.o.Key).ToList();
:
Key
原因在于:
//Original:
var aaa = data.GroupBy(o => o.Date)
.Select(o => o.ToList()})
.ToList();
//Then you should:
var aaa = data.GroupBy(o => o.Date)
.Select(o => o.ToList()})
.Select(x => o.FirstOrDefault().Date)
.ToList();
Date
,但现在您有一个List<YourClass>
,其中IEnumerable<List<YourClass>>
中的每条记录,所有内部项目都具有相同的日期IEnumerable
中 - 获取内部集合中的任何项目 - 并获取Select
它与在此示例中获取Date
之前相同要实现您实际获得的目标(按日期分组并获取每个组的符号):
Key
答案 1 :(得分:0)
问题是你的语法不正确。您创建了一个匿名对象,因此您需要使用实例名称访问该属性。所以你应该这样做。
var bbb = aaa.Select(o => o.o.Key).ToList();
如果我们将aaa改为二维列表,是否可以获得 以前的密钥?
不,因为你已经摸索了值集合而不是Key
。因此结果不会包含Key
。