首页 > 解决方案 > 使用 LINQ 忽略重复的行

问题描述

我想在加入 2 个表后显示唯一的行:

Id        Title
12        Title 1
13        Title 2
14        Title 3

作者

Id  BookId    Name
1   12        Steeve
2   13        Michel
3   13        Robert

当在 Author Table 中多次找到 BookId 时,预期的结果是显示最后一个 Id(最后一个条目):

我的实际 LINQ 代码

from book in Books
join author in Authors on book.Id equals author.BookId into gr1
from join1 in gr1.DefaultIfEmpty()

实际结果

BookId   AuthorId
12       1 
13       2
13       3
14       NULL

预期结果

BookId   AuthorId
12       1 
13       3
14       NULL

谢谢

标签: c#sqllinq

解决方案


方法如下:

var query = from book in Books
            join author in Authors on book.Id equals author.BookId into gr1
            select new { BookId = book.Id, AuthorId = gr1.LastOrDefault()?.Id };

小提琴我


推荐阅读