【问题标题】:Find Count using lambda Expression使用 lambda 表达式查找计数
【发布时间】:2016-11-07 12:29:29
【问题描述】:

我有以下课程:

public class Promotion
{
    public Offers Offers { get; set; }
}
public class Offers
{
   public List<PromotionOffer> Offer { get; set; }
}

public class PromotionOffer
{
    public string CategoryName { get; set; }
}

我有一个Promotion的对象:

Promotion applicablePromotion = promotion;

applicablePromotion 包含Offer 的列表,每个报价都有CategoryName。我想找到CategoryName == Package的计数在哪里

类似:

int count = applicablePromotion.Offers.Offer.Find(c => c.CategoryName == "Package").Count;

我该怎么做?

【问题讨论】:

标签: c# linq lambda


【解决方案1】:

你可以使用:

var count = applicablePromotion.Offers.Offer.Count(o => o.CategoryName == "Package"); 

在 LINQ 中,Count 可以接受 Lambda 表达式,您不必使用 Where 进行查询

在这里查看:

&lt;iframe width="100%" height="475" src="https://dotnetfiddle.net/Widget/UKyWQJ" frameborder="0"&gt;&lt;/iframe&gt;

【讨论】:

    【解决方案2】:

    您可以使用Where 代替Find

    int count = applicablePromotion.Offers
           .Offer
           .Where(x=> x.CategoryName == "Package")
           .Count();
    

    【讨论】:

      【解决方案3】:

      不应该只是:

      int count = applicablePromotion.Offers.Find(c => c.CategoryName == "Package").Count;
      

      我想Offers 是你的收藏,所以你必须在上面运行 Find。

      【讨论】:

      • Promotion 上的属性Offers 不是集合,但它包含集合。
      • 我是的,对不起,我看到了。命名对我来说有点混乱。我认为原始代码应该可以正常工作。它有什么问题?当我们尝试使用它时,错误信息是什么?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多