我有一个linq列表选择问题

我有一个linq列表选择问题,linq,select,Linq,Select,如果有对象集合/列表,如何从该集合/列表中选择不同的记录 例如,我正在执行以下操作,但两者的计数相同: var list = List<Order>; list.add( new Order { Status = "Completed" }); list.add( new Order { Status = "Completed" }); list.add( new Order { Status = "Completed" }); list.add( new Order {

如果有对象集合/列表,如何从该集合/列表中选择不同的记录

例如,我正在执行以下操作,但两者的计数相同:

 var list = List<Order>;
 list.add( new Order { Status = "Completed" });
 list.add( new Order { Status = "Completed" });
 list.add( new Order { Status = "Completed" });
 list.add( new Order { Status = "Processing" });

 var = completed = list.Select(x => x.Status == "Completed").Count();
 var = Processing = list.Select(x => x.Status == "Processing").Count();
var list=list;
添加(新订单{Status=“Completed”});
添加(新订单{Status=“Completed”});
添加(新订单{Status=“Completed”});
添加(新订单{Status=“Processing”});
var=completed=list.Select(x=>x.Status==“completed”).Count();
var=Processing=list.Select(x=>x.Status==“Processing”).Count();

谢谢

嗯,有两个问题和一个简化:

  • 变量声明不应该在
    var
    和变量名之间有
    =
  • 对于筛选,应使用
    Where
    而不是
    Count
  • 使用
    Count
    重载会更简单,它首先接受一个谓词
因此:

或者,您可以创建“按状态计数”的字典:


嗯,有两个问题和一个简化:

  • 变量声明不应该在
    var
    和变量名之间有
    =
  • 对于筛选,应使用
    Where
    而不是
    Count
  • 使用
    Count
    重载会更简单,它首先接受一个谓词
因此:

或者,您可以创建“按状态计数”的字典:


您得到的计数是相同的,因为您正在创建由
true
false
值组成的结果,但当您对它们进行计数时,它们仍然与集合中的项目数量相同

您应该使用
Where
而不是
Select
,或者只需将条件放在
计数中即可:

int completed = list.Count(x => x.Status == "Completed");
int processing = list.Count(x => x.Status == "Processing");

您得到的计数是相同的,因为您正在创建由
true
false
值组成的结果,但当您对它们进行计数时,它们仍然与集合中的项目数量相同

您应该使用
Where
而不是
Select
,或者只需将条件放在
计数中即可:

int completed = list.Count(x => x.Status == "Completed");
int processing = list.Count(x => x.Status == "Processing");
int completed = list.Count(x => x.Status == "Completed");
int processing = list.Count(x => x.Status == "Processing");