c# - 创建一个与类属性具有相同类型的列表

标签 c# list generics

我想创建一个列表,获取某个属性在某个类的列表中具有的所有值,并将这些值添加到另一个列表,该列表的类型与类属性相同。

假设我有 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 更改为至 longGuid ,例如。

我试过

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/

相关文章:

c# - 如何从 ActionFilterAttribute 访问 AppSettings

javascript - ASP.NET MVC/JavaScript - 从 C# amp 解码编码的 HTML 字符串

c# 包含对象不工作

python - 编写一个python函数来循环出每个id的值

c# - 如何冒泡我的 ViewModel 层次结构中的更改?

c# - 首先使用 EF 代码映射组合键

python - 查找字符串之间的重复模式

generics - Spring 5 : Programmatically register generic bean

.net - 测试泛型类型是否实现接口(interface)并使用该接口(interface)

Java泛型结合接口(interface)继承