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

问题描述 投票:-2回答:1

我试图使用文档提供的稍微不同的结构向我的Algolia数据库添加一个对象,这样我就不必以字符串格式输出Json对象,但是我遇到了一个错误说明

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

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

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);
c# asp.net algolia
1个回答
0
投票

遗憾的是,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记录)进行交互。

© www.soinside.com 2019 - 2024. All rights reserved.