c# - 使用 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
谢谢
解决方案
方法如下:
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 };
推荐阅读
- arrays - 将数据保存到数组并在rails中打印数组
- python - 为什么 Python 的 shutil.which() 不起作用?
- laravel - 我在使用 laravel 发送电子邮件时遇到问题
- java - Chilkat - CFtp2 - Java - 当凭据(用户名/密码)为日语/韩语/阿拉伯语时登录失败
- ios - Xcode 模拟器恢复为默认值
- javascript - 以编程方式获取 XHR 内容
- python-3.x - 使用没有“except”的“try”+“finally”永远不会产生任何错误
- html - 我无法让滚动成为网站的一部分
- java - 如何使用包含哈希图和另一个属性的 gson 反序列化 JSON?
- ruby-on-rails - 为什么这个 link_to 使用 GET 而不是我指定的 DELETE?