Books = g.ToList() //其实这行是行不通的
大概是因为Books属性的类型是List<string>
, not List<ActualClass>
.
我添加了这个查询,您可以尝试一下吗b.Select(bn => bn.BookName).ToList()
仅提取书籍名称:
var books = new List<ActualClass>
{
new ActualClass { BookName = "A", DateOfIssue = new DateTime(2015, 10, 10, 10, 10, 0), IssuerName = "1" },
new ActualClass { BookName = "B", DateOfIssue = new DateTime(2015, 10, 10, 10, 10, 0), IssuerName = "1" },
new ActualClass { BookName = "C", DateOfIssue = new DateTime(2015, 10, 10, 10, 10, 0), IssuerName = "1" },
new ActualClass { BookName = "D", DateOfIssue = new DateTime(2015, 10, 10, 10, 10, 0), IssuerName = "2" },
new ActualClass { BookName = "E", DateOfIssue = new DateTime(2015, 10, 10, 12, 10, 0), IssuerName = "2" },
new ActualClass { BookName = "F", DateOfIssue = new DateTime(2015, 10, 10, 12, 10, 0), IssuerName = "2" }
};
var result = books.GroupBy(x => new { x.IssuerName, x.DateOfIssue })
.Select(b => new ViewModel
{
Books = b.Select(bn => bn.BookName).ToList(),
// Accessing to DateOfIssue and IssuerName from Key.
DateOfIssue = b.Key.DateOfIssue,
IssuerName = b.Key.IssuerName
});
我按以下方式分组:x.IssuerName, x.DateOfIssue
。我通过传递匿名类型来做到这一点GroupBy()
通过以下方式:x => new { x.IssuerName, x.DateOfIssue }
.
现在它们已成为关键,您可以访问发行人名称 and 签发日期from SELECT 语句中的 KEY 如下所示:b.Key.IssuerName
and b.Key.DateOfIssue
.