我做了一个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的作用。
任何帮助?
答案 0 :(得分:2)
标准ObservableCollection<T>.Count
属性将为您提供集合中的项目数。
您正在寻找的是:
testStatusOneItemCount = lstTestData.Where(item => item.TestStatus == 1).Count()
...使用IEnumerable<T>.Count()
方法,它是LINQ的一部分。
答案 1 :(得分:0)
为了详细说明,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
您可以在没有临时变量的情况下组合它:
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 :)