You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET中基于可见性筛选帖子的LINQ表达式问题求助

问题分析与修复方案

嘿,我一眼就瞅出你这段LINQ表达式的问题所在了——逻辑运算符用错啦!

你想要的是筛选「可见性为Public」或者「可见性为Private且作者ID匹配当前用户」的帖子,但你现在写的表达式用了&&(逻辑与),这就变成了要求帖子同时满足「是Public」和「是Private且作者ID匹配」,这显然不可能(一个帖子的可见性总不能同时是Public和Private吧),所以你的表达式永远返回false,自然筛选不出任何内容。

正确的LINQ写法

查询语法版本:

var filteredPosts = from e in list
                    where e.Visibility == Visibility.Public 
                          || (e.Visibility == Visibility.Private && e.Author.Id == userId)
                    select e;

方法语法版本(更简洁):

var filteredPosts = list.Where(e => 
    e.Visibility == Visibility.Public 
    || (e.Visibility == Visibility.Private && e.Author.Id == userId));

补充说明

这个逻辑会准确保留你需要的两类帖子:

  • 所有公开可见的帖子
  • 仅当前用户自己发布的私密帖子

如果你的Visibility枚举还有其他取值(比如FriendOnly之类的),这个表达式也会自动排除那些不符合条件的帖子,完全符合你的需求。

内容的提问来源于stack exchange,提问作者EL02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 17:47:46