Tag: collections

微软是否会让所有系列都可以被LINQ使用?

我一直在使用LINQ(并且喜欢它),但是当我遇到.NET专用集合(DataRowCollection,ControlCollection)时,感觉就像我遇到了一个speedbump。 有没有办法将LINQ与这些专用控件一起使用,如果不是,你认为微软会在下一版本的框架中解决这个问题吗? 或者我们是否继续迭代这些非LINQ方式,或者将项目从集合中拉出到LINQ-able系列中?

集合作为C#中的装饰器

在设计集合基础架构时,我们遇到了一个非常“明显”的问题:假设您需要实现许多(子)类型的集合。 其中一个方面是存储相关 : 列表 , 数组等,而另一个是与行为相关的 : 有序 , 仅删除 , 可观察 (每次更改时触发事件的那个)等。 显然(再次),需求直接映射到着名的Decorator设计模式( 列表 , 数组 ),其中存储相关的方面将由多个行为( 有序 , 可观察等)装饰。 知道某人已经实施的类似事情会很棒。 因此,如果可能 – 请推荐/参考任何维护良好的第三方库,以满足上述要求。 谢谢到目前为止:)

NUnit嵌套集合比较

是否有类似于CollectionAssert.AreEquivalent()的东西适用于嵌套集合? 以下代码…… CollectionAssert.AreEquivalent ( new Dictionary<int, Dictionary> { { 1, new Dictionary { { 10, “foo” }, { 11, “bar” }, { 12, “spam” } } }, { 2, new Dictionary { { 20, “eggs” }, { 21, “eels” } } }, { 3, new Dictionary { { 30, “hovercraft” } } } }, new […]

如何在LINQ中通过索引连接两个集合

什么可能是LINQ等效于以下代码? string[] values = { “1”, “hello”, “true” }; Type[] types = { typeof(int), typeof(string), typeof(bool) }; object[] objects = new object[values.Length]; for (int i = 0; i < values.Length; i++) { objects[i] = Convert.ChangeType(values[i], types[i]); }

数据的异步处理

在那一刻我试图组装一个异步tcp服务器来接收我想要处理的数据,提取值并插入到sql server。 我认为最好的基本概念是一旦数据被接收并确认为整个消息,那么消息应该被传递到某种集合以等待基于FIFO的处理,这将解析值并将它们插入到sql server。 我想这就是消费者/生产者模式。 我一直在寻找最好的收集/方式来做到这一点,到目前为止看到BlockingCollection,ConcurrentCollection和BufferBlock使用async / await,我认为这可能是要走的路,但说实话我不确定。 我找到的最好的例子是Stephen Cleary的博客,特别是这篇文章, http://blog.stephencleary.com/2012/11/async-producerconsumer-queue-using.html 我的主要保留意见是,我绝不想放慢速度或中断接收消息,我建议使用多个生产者/消费者示例,这可以在上面的链接中看到,但我想知道的是; 我在这个假设中是正确的,还是在我的场景中有更合适的方法。 如果我在我的假设中是正确的,那么考虑到我的用例,任何人都可以建议实现这一点的最佳方法。 任何和所有的帮助非常感谢。

集合具有非常快速的迭代和良好的添加和移除速度

我正在追踪一个可以快速迭代的集合。 我还会定期添加项目和删除(特定)项目,因此理想情况下这些操作也会很快。 我正在开发xbox,因此仅限于紧凑框架(或多或少)。 将垃圾和对象分配保持在最低限度非常重要,因此我可以为我的对象预先分配空间的任何事情都会很棒。 我将在集合中存储uint (但如果需要可以是int )。 一般的解决方案会很好,因为我相信我将来会有需求。 一个.net集合将是理想的,没有一个轻量级和开源的东西会很棒。 是否有适合我需求的collections课程? 如果没有,我将如何创建一个? 为了详细说明,它们是对象id,类应该处理每个帧。 它们通常按升序添加,有间隙。 没有上限。 任何可以删除,这将留下空白。 迭代顺序并不完全重要,但如果顺序一致,它将非常有用(特别是对于调试)。

ConcurrentDictionary替代可移植类库

我正在编写一个面向.NET 4.5,Windowsapp store应用程序和Windows Phone 8的可移植类库。我需要一个高效的内存缓存机制,因此我考虑使用ConcurrentDictionary ,但它不可用于WP8。 会有很多读取和相对较少的写入,所以理想情况下我想要一个支持来自多个线程的无锁读取的集合,并由单个线程写入。 根据MSDN ,非通用Hashtable具有该属性,但不幸的是它在PCL中不可用… PCL中是否有另一个符合此要求的集合类? 如果没有,那么在不锁定读取的情况下实现线程安全的好方法是什么? (锁定写入是可以的,因为它不会经常发生) 编辑:感谢JaredPar的指导,我最终使用来自Microsoft.Bcl.Immutable的 ImmutableDictionary以完全无锁的方式实现了我的缓存: class Cache { private IImmutableDictionary _cache = ImmutableDictionary.Create(); public TValue GetOrAdd(TKey key, [NotNull] Func valueFactory) { valueFactory.CheckArgumentNull(“valueFactory”); TValue newValue = default(TValue); bool newValueCreated = false; while (true) { var oldCache = _cache; TValue value; if (oldCache.TryGetValue(key, out value)) return value; // […]

从函数返回匿名类型

我可以在函数中使用匿名类型作为返回类型,然后将返回值的内容填充到某种类型的数组或集合中,同时还向新数组/集合添加其他字段吗? 请原谅我的伪代码…… private var GetRowGroups(string columnName) { var groupQuery = from table in _dataSetDataTable.AsEnumerable() group table by new { column1 = table[columnName] } into groupedTable select new { groupName = groupedTable.Key.column1, rowSpan = groupedTable.Count() }; return groupQuery; } private void CreateListofRowGroups() { var RowGroupList = new List(); RowGroupList.Add(GetRowGroups(“col1”)); RowGroupList.Add(GetRowGroups(“col2”)); RowGroupList.Add(GetRowGroups(“col3”)); }

我在理解IQueryable 时遇到了问题

所以我想了解IQueryable 。 我正在阅读的教程建议使用它但不确定为什么。 代码只是使用LINQ to SQL返回一些值。 我过去已经做了很多次,但没有使用IQueryable 为什么在我的函数中使用它返回超过1的值? 这是我的代码: public IQueryable GetItems() { return from item in db.Items where item.IsActive == true orderby item.ItemNumber select item; }

.NET 4 ISet HashSet 可以替换NHibernate Iesi.Collections ISet,HashSet吗?

.NET 4 ISet HashSet 可以替换NHibernate Iesi.Collections ISet,HashSet吗? 我正在使用Castle代理和NHibernate 3.0。