从NoSQL(专用于Cosmos DB)查询不同的值不能转换为模型类型

时间:2019-04-12 17:09:04

标签: c# nosql azure-cosmosdb querying

摘要

简而言之,我试图显示所有不同的ID。我试图了解为什么当我第一次运行查询时(不是截然不同的),我能够将它们与我的模型一起使用,而不是现在。我遇到的错误是Cannot convert from System.String to AppName.Models.Student

示例

例如,显示集合中的所有ID(文档中有重复的ID):"SELECT s.ClassId from Students s"效果很好,但是当我尝试获取不同的值时,它无法转换它们,查询为{{1 }}

这是我对Cosmos DB的查询:

SELECT DISTINCT VALUE s.ClassId from Students s"

我将模型更改为仅包含

   public List<T> Query(string query)
        {
            FeedOptions queryOptions = new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true };

            // Execute query via SQL
            IQueryable<T> QueryInSql = Client.CreateDocumentQuery<T>(
                    UriFactory.CreateDocumentCollectionUri(Database, Collection),
                    $"{query}",
                    queryOptions);

            // convert Iqueryable to a list 
            return QueryInSql.ToList();
        }

带有文档的样本收集

public class Class
{
    public string ClassId {get; set;}
}

1 个答案:

答案 0 :(得分:0)

因此,错误出在我传入的查询中。向其中添加VALUE时,您会得到

["en","sp"]

但是我认为我得到的是

[{"id": "en"}, {"id": "sp"}]