计算ObservableCollection中等于1-C#的项目数

本文关键字:1-C# 项目数 ObservableCollection 计算 | 更新日期: 2023-09-27 18:21:33

我进行了一个SQL查询,并将数据填充到ObservableCollection中。数据库包含许多列,所以我想计算有多少个特定列=1的实例,然后将该数字返回给int

查询:

var test = from x in m_dcSQL_Connection.Testheaders 
           where dtStartTime <= x.StartTime && dtEndtime >= x.StartTime 
           select new {
                         x.N, 
                         x.StartTime, 
                         x.TestTime, 
                         x.TestStatus, 
                         x.Operator, 
                         x.Login,
                         x.DUT_id, 
                         x.Tester_id, 
                         x.PrintID 
                       };

然后我通过将从数据库中提取的数据添加到Observable Collection

lstTestData.Add(new clsTestNrData(item.N.ToString(), 
                    item.StartTime.ToString(), 
                    item.TestTime.ToString()
                    etc.....

我想数一下TestStatus=1的次数。

我读过有关.Count属性的文章,但我不完全理解它是如何在ObservableCollections上工作的。

有什么帮助吗?

计算ObservableCollection中等于1-C#的项目数

标准的ObservableCollection<T>.Count属性将为您提供集合中的项数。

你要找的是:

testStatusOneItemCount = lstTestData.Where(item => item.TestStatus == 1).Count()

其使用作为LINQ的一部分的CCD_ 2方法。

为了详细说明,Count将简单地计算集合中的对象
我建议你快速看一下林克101。非常好的例子。

这里有一个例子:

// Assuming you have :
var list = new List<int>{1,2,3,4,5,6 };
var items_in_list = list.Count(); //  = 6;

使用linq的Where,基本上就是过滤掉项目,创建一个新的列表。因此,下面将给你所有配对数字的计数:

var pair = list.Where(item => item%2 ==0);
var pair_count = pair.Count; // = 3

您可以在没有临时变量的情况下进行组合:

var total = Enumerable.Range(1,6).Where(x => x % 2 ==0).Count(); // total = 6;

或者你可以选择其他东西:

var squares_of_pairs = Enumerable.Range(1,6)
                                .Where(x => x % 2 ==0).
                                .Select( pair => pair*pair);
// squares_of_pairs = {4,16, 36}. You can count them, but still get 3 :)