You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.NET Core控制台应用向Azure搜索索引迭代批量上传文档

问题原因

IndexDocumentsBatch.Create方法接收的是params IndexDocumentsAction<Hotel>[]类型的参数数组,C#语法不支持直接在方法参数列表中嵌入foreach循环生成参数,因此你的写法会报编译错误。

正确实现方式

方法1:使用LINQ转换(推荐)

先引入LINQ命名空间,直接将酒店列表转换为上传操作数组传入方法:

using System.Linq;

// 直接构造上传批次
IndexDocumentsBatch<Hotel> batch = IndexDocumentsBatch.Create(
    hotels.Select(h => IndexDocumentsAction.Upload(h)).ToArray()
);

方法2:手动遍历构造操作集合

如果不想用LINQ,也可以先遍历生成操作集合,再转数组传入:

List<IndexDocumentsAction<Hotel>> uploadActions = new List<IndexDocumentsAction<Hotel>>();
foreach (var hotel in hotels)
{
    uploadActions.Add(IndexDocumentsAction.Upload(hotel));
}

IndexDocumentsBatch<Hotel> batch = IndexDocumentsBatch.Create(uploadActions.ToArray());

注意事项

  • Azure认知搜索单个文档上传批次最多支持1000个文档,你当前800余条数据可以单次提交,如果后续数据量超过1000需要拆分多个批次分别上传。
  • 批次构造完成后调用搜索客户端的IndexDocumentsAsync方法即可完成提交:
// 假设已完成SearchClient的初始化,命名为searchClient
await searchClient.IndexDocumentsAsync(batch);

内容的提问来源于stack exchange,提问作者nkacolz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:09:00