好吧,林。试试这个。
为什么
NextActioners.Select(n => n.NextActioner.Equals(true));
错误地找到2条记录,
但是
from a in NextActioners where (a.NextActioner.Equals(true)) select a;
正确地找不到?
关于我的好Linqpad:
public class AppPerson
{
public string PersonId;
public string FullName;
public string Role;
public bool NextActioner;
}
void Main()
{
var NextActioners = new List<AppPerson> {
new AppPerson{FullName="testFullname1", NextActioner=false},
new AppPerson{FullName="testFullname2", NextActioner=false},
};
//Are all the NextActioners 'nextActioner' value false
var noApproversSelected = NextActioners.All(a => a.NextActioner.Equals(false));
Console.WriteLine("noApproversSelected={0}",noApproversSelected.ToString());//Result = true
var listOfApprovers = from a in NextActioners
where (a.NextActioner.Equals(true))
select a;
Console.WriteLine("listOfApprovers.Count()={0}",listOfApprovers.Count().ToString());//Result = 0
var listOfApprovers1 = NextActioners.Select(n => n.NextActioner.Equals(true));
Console.WriteLine("listOfApprovers1.Count()={0}",listOfApprovers1.Count().ToString());//Result = 2!!!!!!!
var listOfApprovers2 = NextActioners.Select(n => n.NextActioner == true);
Console.WriteLine("listOfApprovers2.Count()={0}",listOfApprovers2.Count().ToString());//Result = 2!!!!!!!
var listOfApprovers3 = NextActioners.Select(n => n.NextActioner);
Console.WriteLine("listOfApprovers3.Count()={0}",listOfApprovers3.Count().ToString());//Result = 2!!!!!!!
}
使用
NextActioners.Select(n => n.NextActioner.Equals(true));
您没有进行任何筛选。Select运算符仅将一种类型的结果转换为不同类型的结果。为了过滤结果,您需要使用Where运算符,如下所示:
var listOfApprovers1 = NextActioners.Where(n => n.NextActioner.Equals(true)).Select(n=>n);