我有一个 ASP.Net MVC5 站点并使用 EF 6.0
一对多关系
这是我的模型
public class Singer
{
[Key]
public int SingerID { get; set; }
public string SingerName { get; set; }
public virtual List<Album> Albums { get; set; }
}
public class Album
{
[Key]
public int AlbumID { get; set; }
public string AlbumName { get; set; }
public string AlbumDate { get; set; }
[ForeignKey("Singer")]
public int SingerID { get; set; }
public virtual Singer Singer { get; set; }
}
现在我的 Linq 如下所示
public IEnumerable<T> GetAlbums()
{
using (dbContext db = new dbContext())
{
IQueryable<T> query = (from c in db.Albums
group c.AlbumId by c.SingerId into albums
select new AlbumMapper()
{
AlbumID = albums.Key,
Total = albums.Count()
})
}
}
在当前场景中,我获取了按 albumId 和专辑数量分组的所有专辑。
但我的需要是形成如下所示的 JSON 字符串
[
{
"SingerID":1,
"Albums":[
{
"AlbumName":"This is Album 1",
"AlbumDate":"Dec 30,2015"
},
{
"AlbumName":"This is Album 2",
"AlbumDate":"Dec 30 2015"
}
]
},
{
"SingerID":2,
"Albums":[
{
"AlbumName":"This is Album 1",
"AlbumDate":"Dec 30,2015"
},
{
"AlbumName":"This is Album 2",
"AlbumDate":"Dec 30 2015"
}
]
}
]
添加映射器类
public class AlbumDetails
{
public DateTIme AlbumDate
public string AlbumName
}
public class AlbumMapper
{
public int AlbumID
public IEnumerable<AlbumDetails> Albums
}
最佳答案
只需将所有歌手放入列表并使用 Json.NET ( http://www.newtonsoft.com/json ) 将其序列化
如果您想省略 SingerName,请务必向属性添加 [JsonIgnore] 数据属性
关于c# - 如何使用 linq to entities 获取字符串数组或 JSON 格式的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34530956/