if (gardenvlist.Count() == getava.Count())
{
}
else if(oceanvlist.Count() == getava.Count())
{
}
else if (cityvlist.Count() == getava.Count())
{
}
gardenvlist
是一个可用于具有名为garden的特定房间的一段时间的日期列表。
getava
是一个包含多个房间名称的时段的日期列表:花园,海洋,城市。
我想在getava
中选择仅限花园(或其他一些特定名称)的计数,然后与列表进行比较。
我该怎么做?
答案 0 :(得分:3)
如果我正确理解了您的问题,您可以将lambda表达式传递给Count()
,以根据属性选择性地计算项目,然后将其与您喜欢的任何内容进行比较。像这样:
if (gardenvlist.Count()== getava.Count(x => x.Name == "GardenName"))
请注意,您需要添加以下using语句:
using System.Linq
答案 1 :(得分:2)
还有另一个Count()
重载,它将lambda表达式作为参数,您可以在其中过滤要从源集合中计数的元素。
假设你有一个像这样的字符串列表:
var list = new List<string>() {
"a",
"b",
"c",
"aa",
"bbb"
};
然后你可以像这样使用它:
var countSingles = list.Count(str => str.Length == 1);
这将计算长度为1的列表元素,因此它将返回3
。
答案 2 :(得分:0)
使用带谓词的重载。这是签名:
public static int Count<TSource>(this IEnumerable<TSource> source,
Func<TSource, bool> predicate);
想象你有这个:
public class Room
{
public string Name { get; set; }
}
然后你把它们放到一个清单中:
var rooms = new List<Room>()
{
new Room { Name = "Living" },
new Room { Name = "Kitchen" }
};
您想知道有多少房间的名称为“Living”:
int count = rooms.Count(x => x.Name == "Living");