C# C忽略数据表中的“重复项”

C# C忽略数据表中的“重复项”,c#,sql,linq,C#,Sql,Linq,我有一个来自某个源的数据表 书名作者 如果该书有多个作者,则该表可以包含重复的同一本书。像 Book id title author 32 Book1 P. Samsom 45 Book34 R. Englund 45 Book34 H. Granger 56 Book45 F. Lister 等等 现在第二本和第三本书是一样的,它有两位作者。当显示可以包含数千项的表时,我不想将同一本书显示两

我有一个来自某个源的数据表

书名作者

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

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

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

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

有什么想法吗?

区别于

var books = Books.GroupBy(x=>x.Title).Select(x=>x.First()).ToList();

@唐宁街,有什么评论吗?或者没有足够的理由这么做。通过一些修改,它可以工作:var books=table.aseneumerable.GroupByx=>x.FieldbookId.Selectx=>x.First.ToList;
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();
var results = books.DistinctBy(x => x.title).ToList();