Count()列表中的一个specfic属性c#

if (gardenvlist.Count() == getava.Count()) { } else if(oceanvlist.Count() == getava.Count()) { } else if (cityvlist.Count() == getava.Count()) { } 

gardenvlist是一个日期列表,可用于具有名为garden的特定房间的一段时间。

getava是一个有多个房间名称的日期列表:花园,海洋,城市。

我想在getava选择只有花园(或其他一些特定名称)的getava ,然后与列表进行比较。

我怎样才能做到这一点?

如果我正确理解你的问题,你可以将一个lambda表达式传递给Count() ,根据属性选择性地计算项目,然后将它与你想要的任何东西进行比较。 像这样的东西:

if (gardenvlist.Count()== getava.Count(x => x.Name == "GardenName"))

请注意,您需要添加以下using语句: using System.Linq

Count()另一个重载是将lambda表达式作为参数,您可以在其中过滤要从源集合计数的元素。

假设你有一个像这样的字符串列表:

 var list = new List() { "a", "b", "c", "aa", "bbb" }; 

然后你可以像这样使用它:

 var countSingles = list.Count(str => str.Length == 1); 

这将计算长度为1的列表元素,因此它将返回3

使用带谓词的重载。 这是签名:

 public static int Count(this IEnumerable source, Func predicate); 

成像你有这个:

 public class Room { public string Name { get; set; } } 

然后你把它们放到一个列表中:

 var rooms = new List() { new Room { Name = "Living" }, new Room { Name = "Kitchen" } }; 

您想知道有多少房间的名字是“Living”:

 int count = rooms.Count(x => x.Name == "Living");