【发布时间】:2016-03-15 15:53:40
【问题描述】:
我有一个关于通过使用 LINQ“搜索”它们的字段名称来获取列表对象的问题。我为此编写了简单的 Library 和 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 来做到这一点。有什么方法可以实现吗?
【问题讨论】:
-
public var 和 private setter 的原因是什么?
-
@icbytes,Book类是一个不可变对象,在多线程代码中非常有用。对于此示例,没有理由修改书籍对象。
-
你是从哪里知道的?
-
因为这个类默认是私有的?
-
问题应该是“如何通过字段内容获取/查找对象”,而不是字段名称。