【发布时间】:2017-09-30 04:42:12
【问题描述】:
各位程序员们好
我有一个关于我正在为 .NET Framework 中的 RESTful/服务/API 编写 C# 代码的技术查询。我试图基于将返回布尔响应的谓词进行查询,而我知道的一种方法是使用 .Select 或 .Any。但是,它们都不能与我的解决方案完美配合,因为我收到一条错误消息,提示“不支持方法 'Select'。\r\nActivityId:..”或“不支持方法 'Any'。\r\nActivityId :.." 相应地。这是我在谓词上使用方法的代码块:
var users = await this.GetEntitiesAsync(x =>
x.Type == typeof(models.User).FullName &&
x.TenantId == tenantId &&
x.Outlets.Select(y => y.Id.ToString()).Contains(storeId) &&
(x.UserName == userName && (x.Password == password || x.Pin == pin)));
这里是 GetEntitiesAsync() 函数的细分:
public virtual async Task<IEnumerable<TEntity>> GetEntitiesAsync(Expression<Func<TEntity, bool>> predicate)
{
if (!CollectionIdExists())
throw new ArgumentNullException(nameof(CollectionId));
using (var client = new DocumentClient(new Uri(EndPoint), AuthKey))
{
IDocumentQuery<TEntity> query = client.CreateDocumentQuery<TEntity>(
UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId))
.Where(predicate)
.AsDocumentQuery();
List<TEntity> results = new List<TEntity>();
while (query.HasMoreResults)
{
results.AddRange(await query.ExecuteNextAsync<TEntity>());
}
return results;
}
}
此外,我更喜欢修改谓词,因为该函数用于其他服务,如果我对该函数进行更改,可能会影响程序中的其他功能。但是,只要有相关的解决方案,我一定会试一试。此外,我对我目前正在开发的环境中的开发有点陌生,因此为给您带来的麻烦表示歉意。我确实需要尽快解决这个问题,并且在发布此讨论时,我一直在为解决方案做一些深入的研究。提前感谢您的关心。祝你玩得开心! :)
【问题讨论】:
标签: c# linq azure select boolean