c# - 根据成员对象列表过滤 LINQ 查询

标签 c# entity-framework linq

我有一个从同事那里继承来的应用程序,用于跟踪反馈卡。我还有一个表单,可以根据用户输入的过滤器数量来过滤网页上显示的卡片。所有过滤器都工作正常,除了针对反馈详细信息应用的过滤器(服务很好/很差,房间干净/肮脏等)。这些存储在我的卡类中的成员类列表中。

下面是每个类的一组片段。

public class Card {
    public long ID { get; set; }
    public List<Feedback> feedback { get; set; }

    ...
}

public class Feedback {
    public long ID {get; set; }

    ...
}

public class CardFilter {
    public ICollection<long> FeedBackDetails {get; set; }

    ...
}

...
public IQueryable<CardType > GetFeedbackQueryable<CardType>(CardFilter filter = null)
        where CardType : Card
{
    var data = Service.GetRepository<CardType>();
    var CardQuery = data.All;
    ...
    if (filter.FeedbackDetails != null && filter.FeedbackDetails.Count != 0)
    {
        cardQuery = cardQuery.Where(card => card.FeedbackValues)
                             .All(fbv => filter.FeedbackDetails.Contains(fbv.ID));
    }
    return cardQuery;
}
...

当我尝试过滤器时:

cardQuery = cardQuery.Where(card => card.FeedbackValues)
                     .All(fbv => filter.FeedbackDetails.Contains(fbv.ID));

它返回 15 个卡片实例,没有任何反馈。如果我使用过滤器:

cardQuery = cardQuery.Where(card => card.FeedbackValues)
                     .Any(fbv => filter.FeedbackDetails.Contains(fbv.ID));

尽管我可以查看数据并看到相应的卡片,但什么也没有返回。

我是 LINQ 新手,所以我知道我错过了一些东西。请在这里为我指明正确的方向。

编辑:

为了提供有关此应用程序的更多背景信息,我会更详细一些。卡表/模型包含有关卡和提交卡的人的信息。我的意思是姓名或匿名、地址、被评论的位置以及其他一些基本事实。反馈项目列在另一个表中并显示在网络表单上,用户可以对每个项目进行正面或负面的检查。每个反馈细节都有三个可能的答案; 0(正)、1(负)或无(无答案)。

卡片模型包含所有基本卡片信息以及反馈响应的集合。给我带来麻烦的过滤器是针对该响应集合的。每张卡片可以有 0 到 52 种可能的 react ,这些 react 可能不适用于所有情况,因此我需要查看与特定情况(清洁度等)有关的所有卡片,无论它们是积极的还是消极的。这就是此过滤器的目的。

最佳答案

不能使用 all 语句,该语句的谓词是如果所有值都与 id 相同。

在你的where语句中,这是一个过滤子句,你没有过滤任何东西吗?

您正在将反馈值与 ID 进行比较吗?它们是一样的吗? 您能否发布更多有关的详细信息

也许可以尝试一下:

cardQuery = cardQuery.Where(card => filter. FeedbackDetails.Contains(card. Id/detsils))
                     .Select(se=> se).Tolist() ;

关于c# - 根据成员对象列表过滤 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38515107/

相关文章:

c# - 尽管 TransactionScopeOption.Suppress 嵌套事务回滚

c# - 使用 C# 删除注册表项

c# - 没有接口(interface)和抽象的存储库 = 畸变?

c# - 是否应该在每个事务上创建 EF dbContext

linq - System.IObservable<字符串> 到 System.IObservable<System.Collections.Generic.List<字符串>>

c# - 从我的 ASP.NET 站点在 Android 3.0 浏览器中下载文件

c# - 获取 .NET 解决方案的完整依赖关系图

linq - 如何在linq中格式化十进制值

entity-framework - EF4 CTP5 : DbContext inheritance

c# - 当查询没有返回记录时,会抛出 Linq Cannot be Null 错误