1

我有一个来自某个来源的数据表,其中的构造函数

bookid 标题作者

如果该书有多个作者,则该表可以包含同一本书(重复)。像

Book id    title    author    
32         Book1    P. Samsom
45         Book34   R. Englund
45         Book34   H. Granger
56         Book45   F. Lister

等等

现在第二本书和第三本书是相同的(它有两个作者)。显示表格(可以包含数千个项目)时,我不想显示同一本书两次或更多次。显示其中一个就足够了(我不在乎)。

在桌子上做一个 Select distinct 在这里没有帮助。做一个选择不同的忽略作者作品,但我至少需要一个作者。所以我想做的是找到最有效的方法来创建一个新的表或视图,忽略任何“重复”项目,至少保留一个作者。

有任何想法吗?

4

3 回答 3

3
var books = Books.GroupBy(x=>x.Title).Select(x=>x.First()).ToList();
于 2012-09-01T17:18:53.717 回答
0
var result =  books.GroupBy(b => b.bookid)
                   .Select(g => 
                        new { 
                            id = g.Key, 
                            title = g.First().title, 
                            authors = g.Select(a=>a.author).ToList() 
                        })
                   .ToList();
于 2012-09-01T17:28:39.093 回答
0

DistinctBy来自MoreLINQ

var results = books.DistinctBy(x => x.title).ToList();
于 2012-09-05T09:08:48.453 回答