如何使用 linq 选择孩子的第一个孩子
本文关键字:孩子 第一个 选择 何使用 linq | 更新日期: 2023-09-27 18:37:04
我有一组类,如下所示:
public class ResponseWrapper
{
public IEnumerable<Book> data { get; set; }
}
public class Book
{
public List<Author> author_data { get; set; }
public string isbn13 { get; set; }
public string publisher_name { get; set; }
public string title { get; set; }
}
public class Author
{
public string name { get; set; }
public string id { get; set; }
}
Book 类包含子作者项的列表。就我而言,我正在尝试选择集合中第一个作者项的"name"属性。
我想我可以使用以下方法选择它:
string author = response.data.Where(b => b.author_data.Any()).Select(b => b.author_data.FirstOrDefault().name);
但是这不会编译,我认为这是因为 Select 返回了一个集合?我只是想得到一个结果。
谁能告诉我获得我想要的单一结果所需的正确 linq 语句?
谢谢
我认为你把事情复杂化了。您可以仅使用 First()
或 FirstOrDefault()
来选择第一项。
string author = response.data.First().author_data.First().name;
不过,只要确保你防备null
。
string author = string.Empty;
Book firstBook = response.data.FirstOrDefault();
if (firstBook != null && firstBook.author_data.Any())
{
author = firstBook.author_data.First().name;
}
试试这个
string author = response.data.Where(b => b.author_data.Any()).FirstOrDefault().author_data.FirstOrDefault().name;