【发布时间】:2021-11-15 13:43:29
【问题描述】:
我有一个包含以下数据的 Json 文件:
[
{ "Id": 510, "Title": "Big Start", "Author": [{ "AuthId": 7777, "Name": "Tom" }] },
{ "Id": 511, "Title": "Rising Tide", "Author": [{ "AuthId": 6666, "Name": "Bob" }] }
]
针对上述情况,我定义了以下类:
public class Book {
public int Id { get; set; }
public string Title { get; set; }
public List<Author> Authors { get; set; }
}
public class Author {
public int AuthId { get; set; }
public string Name { get; set; }
}
我已经使用以下代码反序列化了 json 数据:
List<Book> books;
using (StreamReader sr = new StreamReader(Server.MapPath("...")))
{
books = JsonConvert.DeserializeObject<List<Item>>(sr.ReadToEnd()).ToList()
}
现在我想使用作者姓名对书籍列表进行排序。我尝试了以下方法:
var list = books.OrderBy(b => b.Author.OrderBy(a => a.Name)).ToList();
但我收到错误消息“至少一个对象必须实现 IComparable”。
谁能帮我使用嵌套作者姓名对上述列表进行排序。
提前致谢。
【问题讨论】:
-
就我而言,列表中总会有一位作者。因此,查看上面的 json 数据,ID 为 511 的记录将列在 510 之前,因为“Bob”在“Tom”之前。我希望这可以澄清。谢谢。
标签: c# linq linq-to-entities