从 NoSQL(特别是 Cosmos DB)查询非重复值无法转换为模型类型



摘要

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

例如,显示我集合中的所有 id(文档中有重复的 id(:"SELECT s.ClassId from Students s"工作正常,但是当我尝试获取不同的值时,它无法转换它们,查询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;}
}

包含文档的样本收集

{
   {
       "id":"abc",
       "studentName": "bob",
       "classId":"en" 
   },
   {
       "id":"bcd",
       "studentName": "billy",
       "classId":"sp"},
   {
       "id":"sdf",
       "studentName": "bart",
       "classId":"en"
   }
}

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

["en","sp"]

然而,我认为我得到的是

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

最新更新