代码之家  ›  专栏  ›  技术社区  ›  R.wilson

从ASP.NET查询CosmosDB_SQL。NET Core 8 Web API返回Single值

  •  0
  • R.wilson  · 技术社区  · 6 月前

    我想从ASP返回单个值。NET Core 8 Web API方法:

    public async Task<Driver> GetDriverByIdAsync(string id)
    {
        var queryDefinition = new QueryDefinition($"SELECT * FROM c WHERE c.id = '{id}'");
        var queryResult = await _container.GetItemQueryIterator<Driver>(queryDefinition).ReadNextAsync();
    
        return queryResult.FirstOrDefault();
    }
    

    此方法工作良好,并按提供的id返回所有数据,但我想要一个单一的属性值,如 name .

    我试过这个:

        public async Task<string> GetDriverByIdAsync2(string id)
        {
            var queryDefinition = new QueryDefinition($"SELECT c.name FROM c WHERE c.id = '{id}'");
            var queryResult = await _container.GetItemQueryIterator<string>(queryDefinition).ReadNextAsync();
    
            return queryResult.FirstOrDefault();
        }
    

    但它不起作用。

    我应该如何更正此代码,使其只返回一个属性值?

    让它只返回一个属性值的正确方法是什么?

    1 回复  |  直到 6 月前
        1
  •  1
  •   Ctznkane525    6 月前

    你试过这样的东西吗:

    您正在创建一个具有匹配属性(名称)的对象(项)。对于GetItemQueryIterator,您将使用该数据类型进行绑定。

    public class Item
    {
       public string name {get; set;}
    }
    
    public async Task<string> GetDriverByIdAsync2(string id)
        {
            var queryDefinition = new QueryDefinition($"SELECT c.name FROM c WHERE c.id = '{id}'");
            var queryResult = await _container.GetItemQueryIterator<Item>(queryDefinition).ReadNextAsync();
    
            return queryResult.FirstOrDefault().name;
        }