我有一个关于通过使用 LINQ“搜索”字段名称来获取列表对象的问题。我编码简单Library
and Book
为此类:
class Book
{
public string title { get; private set; }
public string author { get; private set; }
public DateTime indexdate { get; private set; }
public int page { get; private set; }
public Book(string title,string author, int page)
{
this.title = title;
this.author = author;
this.page = page;
this.indexdate = DateTime.Now;
}
}
class Library
{
List<Book> books = new List<Book>();
public void Add(Book book)
{
books.Add(book);
}
public Book GetBookByAuthor(string search)
{
// What to do over here?
}
}
所以我想得到Book
某些字段等于某些字符串的实例,例如
if(Book[i].Author == "George R.R. Martin") return Book[i];
我知道使用简单的循环代码是可能的,但我想使用 LINQ 来做到这一点。有什么办法可以实现这一点吗?
var myBooks = books.Where(book => book.author == "George R.R. Martin");
并记得添加:using System.Linq;
在您的特定方法中,因为您只想返回one书,你应该写:
public Book GetBookByAuthor(string search)
{
var book = books.Where(book => book.author == search).FirstOrDefault();
// or simply:
// var book = books.FirstOrDefault(book => book.author == search);
return book;
}
The Where https://msdn.microsoft.com/library/bb549418%28v=vs.100%29.aspx返回一个IEnumerable<Book>
,那么FirstOrDefault https://msdn.microsoft.com/en-us/library/bb340482%28v=vs.110%29.aspx返回在可枚举或中找到的第一本书null
如果没有找到人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)