我想向List添加colections,但仅限于广告尚不存在.我知道HashSet的工作原理没有重复值,但是使用HashSet我不能使用AddRange和GetRange.
那么有可能像hashSet一样模拟List吗?
List<Advertisements> advertisements = new List<Advertisements>();
advertisements.AddRange(NHibernateSession.CreateCriteria<Advertisements>()
.CreateCriteria(AdvertisementsProperties.City.ToString())
.Add(Restrictions.Or(
Restrictions.Like(CitiesProperties.Name.ToString(), text, MatchMode.Anywhere),
Restrictions.Like(CitiesProperties.SlovenianName.ToString(), text, MatchMode.Anywhere)))
.List<Advertisements>());
advertisements.AddRange(NHibernateSession.CreateCriteria<Advertisements>()
.CreateCriteria(AdvertisementsProperties.Area.ToString())
.Add(Restrictions.Or(
Restrictions.Like(AreasProperties.Name.ToString(), text, MatchMode.Anywhere),
Restrictions.Like(AreasProperties.SlovenianName.ToString(), text, MatchMode.Anywhere)))
.List<Advertisements>());
Run Code Online (Sandbox Code Playgroud)
Meh*_*ari 15
一堆物品添加到HashSet像AddRange没有简单地使用:
set.UnionWith(items);
Run Code Online (Sandbox Code Playgroud)
a HashSet中的项目未编入索引(它实现为哈希表,不是为基于索引的元素访问而设计的).如果您确实需要按索引存储项目,则必须使用简单列表并创建自己的Add方法,Contains在将每个元素添加到基础列表之前检查每个元素.当然,线性列表不能提供设置操作的效率HashSet.