gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:01:36 26 4
gpt4 key购买 nike

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

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

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 的新手,所以我知道我遗漏了一些东西。请在这里为我指明正确的方向。

编辑:

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

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

最佳答案

您不能使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com