当前位置: 首页 > 知识库问答 >
问题:

Linq基于子类属性选择数组项

寿子默
2023-03-14

我有一个C#类

public class ProductCategory {
  public int ProductCategoryId { get; set; }
  public string ProductCategoryName { get; set; }
  public List<Product> Products { get; set; }

产品有名称、价格等属性

我想要一个linq查询,它将返回带有产品数组的产品类别的结构,但仅当产品的属性等于一个值时。例如价格是10的地方。

我试过了

productCategory.SelectMany(p => p.Products).Where(x => x.Price == 10)

但这返回给我一个产品数组,但我想要产品类别中所有符合条件的产品。

作为一个额外的挑战,我也有多个标准,所以在这个例子中,假设价格等于10,30和50。其中一个标准有两个值,这就增加了复杂性。我要做的只是调用不同的选择标准,然后在结尾处连接它们

var equalToTen = productCategory.Select... x.Price == 10
var equalToThirty = productCategory.Select... x.Price == 30
var equalToFiftyANdNameIsTest = productCategory.Select... x.Price == 50 && x.Name == "Test"

return equalToTen.Union(equalToThirty).Union(equalToFiftyANdNameIsTest)

但我确信它可以在一个语句中完成,而不需要在结尾处连接

共有1个答案

黄弘盛
2023-03-14

只需对其产品使用.any(),它将返回至少有一个匹配产品的所有类别:

productCategory.Where(c => c.Products.Any(p = > p.Price == 10)).ToList();
 类似资料:
  • 我有一个具有以下结构的对象数组: 我希望输出为: 因为这两个都检查了。 我已尝试根据选中值筛选出: 我正在获取已选中属性值设置为。 我们将不胜感激。

  • 我有一个像这样的xml结构 我需要选择ClassX节点,并在包含constname1(即variable1)AttAttribute的值中 这起作用了。但是,我需要做如下操作,而不是在循环中混合文本 这是我不对的 然而下面是正确的 但我希望将选择范围限制为classX的节点

  • TL; DR 我想以一种从AbstractP的映射方式来使用ModelMapper,然后在ModelMapper-Config中为每个子类调用特定的映射器,然后跳过其余的(abstrac类)映射。 这怎么可能?这是正确的做法吗?是否存在设计缺陷? 我所拥有的: 母公司: 一个子实体: 另一个子实体: 然后我有父DTO类: 一个孩子DTO: 另一个DTO: 在我的例子中,我将从控制器获取DTO,并在

  • 问题内容: 我正在使用c#中的linq查询遇到一个问题,我的linq查询如下 我有一个 perfmon 类,它包含诸如(id,counter1,counter2 …)之类的属性,现在有20多个计数器,我已经开发了sql查询以根据参数中传递的计数器名称选择id和计数器,例如,如果我已经传递了counter1,它将仅选择id,counter1(重命名为counter) 如果我将在这里使用开关盒,那么它

  • 有一个标签,如: 如果我们在选择标签下有选项,我们可以使用选择类。但是这里所有选择值(Name1,Name2,Name3)都在< code>_listener属性中。 那么,我们如何获得硒中下拉框的值并输入呢?

  • 问题内容: 是否可以使用JAXB根据xml的属性将xml解组到特定的Java类? 我想要一个包含三角形和正方形的Shape对象的列表,每个对象都有自己的特定于形状的属性。IE浏览器: 我目前只是将所有属性都放在一个大的“ Shape”类中,这并不理想。 如果形状已正确命名为xml元素,则可以使它正常工作,但是不幸的是,我无法控制要检索的xml。 谢谢! 问题答案: JAXB是一个规范,特定的实现将