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");