C# 无法将匿名类型隐式转换为System.Collections.Generic.List
我试图使用文档提供的稍微不同的结构向Algolia数据库添加一个对象,这样我就不必以字符串格式键入Json对象,但是我遇到了一个错误 无法将匿名类型隐式转换为 System.Collections.Generic.List 我看到objs变量中所有键/值的红色错误消息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&
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键更新原始问题后需要逗号