簡體   English   中英

計算ObservableCollection中等於1的項目數-C#

[英]Counting number of items in ObservableCollection where it equals 1 - C#

我進行了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集合中:

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

我想計算TestStatus = 1的次數。

我已經讀過有關.Count屬性的信息,但我還不完全了解它如何在ObservableCollections上工作。

有什么幫助嗎?

標准的ObservableCollection<T>.Count屬性將為您提供集合中的項目數。

您正在尋找的是:

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

...使用LINQ的IEnumerable<T>.Count()方法。

為了詳細說明, Count將僅對集合中的對象進行計數。
我建議快速看一下linq 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

您可以不使用temp變量將其組合:

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 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM