IEnumerable<T> 使用 c# 在函数内访问 T 的属性

问题描述

有一个 c# 函数接受一个列表作为 IEnumerable<T>。我想在这个函数中写一些 linq 查询,但是 T 的属性似乎没有得到。

在编写 Linq 语句之前,我们如何将 T 映射到特定类型?在本例中,它的类型为 CustomerAddress,具有 3 个属性 Id,Name,Gender

private IEnumerable<IEnumerable<T>> SmartSplit<T>(IEnumerable<T> sourceList)
{
    // not able to access any props of T; in this case T is of type CustomerAddress
    int itemsCount = sourceList.Where(v => v.???==).Count();  
}
    

我想在此函数中获取 itemsCount 作为名称长度 > 50 的项目数。 Linq 将针对一个列表就像

int itemsCount = sourceList.Where(p => p.Name.Length > 50).Count();
        

但是如何访问 Name 函数内的属性 SmartSplit?我可以看到有一种方法可以通过先转换为列表然后像下面这样编写 LINQ

private IEnumerable<IEnumerable<T>> SmartSplit<T>(IEnumerable<T> sourceList)
{
    List<CustomerAddress> sourceListCopy = sourceList as  List<CustomerAddress>;
    int itemsCount=  sourceListCopy.Where(p => p.Name.Length > 50).Count();
}

我们可以在不强制转换和复制到函数内的临时列表的情况下执行此操作吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)