无法将匿名类型隐式转换为 System.Collections.Generic.List

Cannot implicitly convert anonymous type to System.Collections.Generic.List

我正在尝试使用文档提供的稍微不同的结构向我的 Algolia 数据库添加一个对象,这样我就不必以字符串格式键入 Json 对象,但是我 运行 进入错误状态

Cannot implicitly convert anonymous type to System.Collections.Generic.List

我看到 objs 变量中所有 key/values 的红色错误消息。

var songIndexHelper = HttpContext.Application.Get("SongIndexHelper") as IndexHelper<SongAlgoliaModel>;

List<JObject> objs = new List<JObject>();

objs = new
{
    ApprovalFL = false,
    FreeFL = album.FreeFL,
    LicenseFL = album.LicenseFL,
    AccountInfoID = album.AccountInfoID,
    AlbumID = album.AlbumID,
    SongID = song.SongID,
    BPM = song.BPM,
    AccountImageURL = album.AccountInfo.ImageURL,
    AccountType = "Artist",
    AlbumName = album.AlbumName,
    Artist = artist,
    FeaturedArtist = songArtistsList,
    ImageURL = album.ImageURL,
    iTunesURL = album.iTunesURL,
    LabelName = album.LabelName,
    Title = album.AlbumName,
    UserID = album.AccountInfo.UserID,
    UploadDate = song.UploadDate,
    Duration = song.Duration,
    objectID = song.SongID
};

songIndexHelper.AddObjects(objs);

这是对文档的引用:https://www.algolia.com/doc/api-reference/api-methods/add-objects/

编辑 替代方法但是,我的 LicenseFL 格式已关闭

List<JObject> objs = new List<JObject>();
objs.Add(JObject.Parse(@"{""ApprovalFL"":false, ""FreeFL"":" + album.FreeFL + ",""LicenseFL"":" +album.LicenseFL+ "}"));

songIndexHelper.AddObjects(objs);

不幸的是,Algolia docs 专注于 JObject(和 JSON 字符串)的使用,这使得出错相当容易(例如无效的 JSON)。

您可能会考虑 approach

var anon = new
{
    ApprovalFL = true,
    // Any other properties here
    objectID = song.SongID
};

var obj = JObject.FromObject(anon);
var objs = new List<JObject> { obj };
songIndexHelper.AddObjects(objs);

现在,由于 anon 变量,您获得了一定程度的安全性(例如,不必担心无效的 JSON 字符串),而且与 Algolia API 的交互也很容易(根据 JObject 进行记录)。