我想创建一个列表,获取某个属性在某个类的列表中具有的所有值,并将这些值添加到另一个列表,该列表的类型与类属性相同。
假设我有 Book 类:
public class Book{
public int code;
public string genre;
public string author;
public string synopsis;
}
然后,我有一些关于 List<Book> myList
的方法包含一些书籍,我想填充一个 bookCodes 列表,它应该与 Book 的属性代码属于同一类型。我不想更改 BookCodes List<int> myBookCodes
列表的声明如果有一天 code
属性从 int
更改为至 long
或 Guid
,例如。
我试过
var myBookCodes = new List<typeof(Books.code)>
但我收到“预期类型”错误。
我也尝试过使用反射,但我也遇到了错误:
System.Reflection.PropertyInfo bookCodeProperty = typeof(Book).GetProperty("code");
Type bookCodeType = bookCodeProperty.PropertyType;
var myBookCodes = new List <>(bookCodeType)
但在这种情况下,编译器会提示“bookCodeType 是一个变量,但它像类型一样使用”。
有没有办法做到这一点?
最佳答案
这很简单……您只需投影列表,类型就会为您处理:
List<Book> myList ...
var codesList = myList.Select(b => b.code).ToList();
if some day the code property is changed from int to long or Guid
然后代码仍然有效,现在是新类型。
关于c# - 创建一个与类属性具有相同类型的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52441816/