在我们的项目中我们经常会查找一些集合中的重要元素,当然我们可以使用常规的foreach循环和if语句来查询,但是我们要学会使用System.Linq命名空间下面的静态类Enumerable下面的静态方法来进行相关查询,public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);其中 Func<TSource, bool> predicate是一个返回bool类型的一个委托,第一个参数是要查询的数据源,比如在下面的代码中:
if (Layouts.Where(x => x.Layout.UnitToken == itm.UnitToken).Count() == 0) 其中Layouts是ObservableCollection<Models.LayoutInfo>类型的变量
public System.Collections.ObjectModel.ObservableCollection<Models.LayoutInfo> Layouts
{
get { return _layouts; }
set
{
if (value != _layouts)
{
_layouts = value;
OnPropertyChanged("Layouts");
}
}
}
另外还举出其它的类型的例子:
var config = planConfig.Where(x => x.Product == itm.GetType().FullName).SingleOrDefault() ?? null;如果无法获取到唯一或者默认值则返回null值
其中 planConfig代表的是一个类的数组,所以数组类型也是可以的。
还有有时我们会从从某一个集合中查到多个元素,然后获取第一个元素,这个可以用下面的这种方式来进行:
TaskPools.Where(x => x.TaskEntity.Cancellation.Token == CancellationToken).ToList()[0].TaskEntity;其中TaskPools是一个ObservableCollection<>类型。