- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我查看和修改了很多代码,但我还没有找到针对 IReliableDictionary
执行 Linq 查询的方法。我知道它与标准的 IDictionary
不同,但我很好奇是否有人运气好。不幸的是,我开始认为这是不可能的。
最佳答案
目前,还没有在可靠字典上执行 linq 查询的常规方法。话虽如此,您可以做一些事情。如前所述,存在 CreateEnumerableAsync 方法的原因是因为服务结构将可靠字典分页到磁盘,但如果您知道底层集合很小并且您可以接受性能影响,那么下面的类将起作用。
public static class AsyncEnumerableExtensions
{
/// <summary>
/// Converts the collection to a list
/// </summary>
/// <typeparam name="TValType">value type of the collection</typeparam>
/// <param name="enumerator">enumerator to convert</param>
/// <param name="ct">cancellation token for the async operations</param>
/// <param name="tx">tx to enforce that this is called in a transactional context</param>
/// <returns>a list containing all elements in the origin collection</returns>
public static async Task<IList<TValType>> ToListAsync<TValType>(
this IAsyncEnumerator<TValType> enumerator,CancellationToken ct, ITransaction tx)
{
IList<TValType> ret = new List<TValType>();
while (await enumerator.MoveNextAsync(ct).ConfigureAwait(false))
{
ret.Add(enumerator.Current);
}
return ret;
}
/// <summary>
/// Converts the collection to a list
/// </summary>
/// <typeparam name="TValType">value type of the collection</typeparam>
/// <param name="enumerator">enumerator to convert</param>
/// <param name="tx">tx to enforce that this is called in a transactional context</param>
/// <returns>a list containing all elements in the origin collection</returns>
public static Task<IList<TValType>> ToListAsync<TValType>(
this IAsyncEnumerator<TValType> enumerator, ITransaction tx)
{
return enumerator.ToListAsync(CancellationToken.None,tx);
}
/// <summary>
/// Converts the collection to a list
/// </summary>
/// <typeparam name="TValType">value type of the collection</typeparam>
/// <param name="enumerable">enumerator to convert</param>
/// <param name="ct">cancellation token for the async operations</param>
/// <param name="tx">tx to enforce that this is called in a transactional context</param>
/// <returns>a list containing all elements in the origin collection</returns>
public static Task<IList<TValType>> ToListAsync<TValType>(this IAsyncEnumerable<TValType> enumerable,
CancellationToken ct, ITransaction tx)
{
return enumerable.GetAsyncEnumerator().ToListAsync(ct,tx);
}
/// <summary>
/// Converts the collection to a list
/// </summary>
/// <typeparam name="TValType">value type of the collection</typeparam>
/// <param name="enumerable">enumerator to convert</param>
/// <param name="tx">tx to enforce that this is called in a transactional context</param>
/// <returns>a list containing all elements in the origin collection</returns>
public static Task<IList<TValType>> ToListAsync<TValType>(this IAsyncEnumerable<TValType> enumerable, ITransaction tx)
{
return enumerable.GetAsyncEnumerator().ToListAsync(tx);
}
}
您还可以实现自己的自定义枚举器和扩展方法,以高效方式对数据执行类似于 linq 查询的操作。我写了一些我想发布的,但他们首先需要一些润色。我有一种潜移默化的感觉,服务结构团队可能已经在处理它,但如果发生这种情况或何时发生,你的猜测和我的一样好。
关于c# - IReliableDictionary 上的 Linq 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37141243/
谁能解释为什么服务结构同时具有 IReliableDictionary 和 IReliableDictionary2,其中 IReliableDictionary 派生自 IReliableDicti
我查看和修改了很多代码,但我还没有找到针对 IReliableDictionary 执行 Linq 查询的方法。我知道它与标准的 IDictionary 不同,但我很好奇是否有人运气好。不幸的是,我开
基于这些帖子: Convert IReliableDictionary to IList What is the most optimal method of querying a reliable
我是一名优秀的程序员,十分优秀!