如何解决LINQ C#除了一个列表中的项目
我有帖子表:
Id ReplyId
1 null
2 1
3 null
4 3
5 null
posts
包含所有这些项目。
我想排除Id = ReplyId的帖子,因此,我想获得ID为2,4,5的帖子。
换句话说,我们可以看到ReplyId = 1,那么我们需要从列表中删除ID = 1的帖子。另外,ReplyId = 3然后从列表中删除ID = 3的帖子。
我该如何实现?
解决方法
posts.Where(x => !posts.Any(y => y.ReplyId == x.Id))
测试:
void Main()
{
var posts = new[] {
new Post { Id = 1,ReplyId = null},new Post { Id = 2,ReplyId = 1},new Post { Id =3,new Post { Id = 4,ReplyId = 3},new Post { Id = 5,};
var endItems = posts.Where(x => !posts.Any(y => y.ReplyId == x.Id));
foreach (var element in endItems)
Console.WriteLine(element.Id);
}
class Post
{
public int Id { get; set; }
public int? ReplyId { get; set; }
}
,
尝试一下:
var posts = new[]
{
new { Id = 1,ReplyId = (int?)null,},new { Id = 2,ReplyId = (int?)1,new { Id = 3,new { Id = 4,ReplyId = (int?)3,new { Id = 5,};
var query =
from p in posts
join p2 in posts on p.Id equals p2.ReplyId into g
where !g.Any()
select p;
我得到:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。