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

C# 无法将匿名类型隐式转换为System.Collections.Generic.List,c#,asp.net,algolia,C#,Asp.net,Algolia,我试图使用文档提供的稍微不同的结构向Algolia数据库添加一个对象,这样我就不必以字符串格式键入Json对象,但是我遇到了一个错误 无法将匿名类型隐式转换为 System.Collections.Generic.List 我看到objs变量中所有键/值的红色错误消息 var songIndexHelper = HttpContext.Application.Get("SongIndexHelper") as IndexHelper<SongAlgoliaModel>; List&

我试图使用文档提供的稍微不同的结构向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);
以下是对文档的参考:

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

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

songIndexHelper.AddObjects(objs);
不幸的是,我们的重点放在了JObject和JSON字符串的使用上,这使得出错变得相当容易,例如,JSON无效

这是一个您可能需要考虑的问题:

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);

现在,由于变量的存在,您获得了一定程度的安全性,例如,不必担心无效的JSON字符串,还可以轻松地与JObject中记录的Algolia API交互。

A objs是一个列表B您正在重新分配它一个匿名类型的实例-它不是列表C,即使它是一个列表,它不是JObject 1的列表,您需要将匿名类型转换为JObject JObject.FromObject。。。可能足够2您需要将其添加到列表中,而不是重新分配list@KirkWoll感谢到目前为止的帮助,我参考了今天早些时候我问的一个问题的建议,他的第二种方法,在这里找到:试图让它在不同的环境中正常工作situation@mjwills老实说从字符串json的角度来看可能更简单。但我的格式在json许可证上再次关闭。声明在字符串LicenseFL键更新原始问题后需要逗号