gpt4 book ai didi

c# - Linq 查询 - 创建通用子集

转载 作者:行者123 更新时间:2023-11-30 17:13:49 25 4
gpt4 key购买 nike

我正在尝试设计一个通用方法,该方法处理一组员工。员工类有大约 5 到 10 个属性。我希望能够通过一个过滤器并取回一个(通用的)集合类 EmployeeSummary,其中包含 Employee 类的一些属性。

public T GetFilteredSubset<T>(Somecollection employeeList, filter)

该方法必须能够将过滤器动态应用到此集合并返回一个新的类型 T 投影,该投影将包含父类的属性子集。我看到其他关于动态应用过滤器的帖子,但无法找到有关指定子集的任何信息(这甚至可能还是我以错误的方式进行)。因此,对于子集,调用者将创建一个类,其属性 - name 和 type 将与父 Employee 类的属性完全匹配,但仅包含属性的子集。该函数需要能够应用过滤器,然后基于类型 T 将仅将那些属性返回给调用者。

使用 VS 2010、.Net 4.0、C#感谢您的帮助/时间

最佳答案

不确定这是否是最佳答案,但是这个怎么样:

public static IEnumerable<TSelect> 
GetFilteredSubset<TEntity, TSelect>(IEnumerable<TEntity> collection,
Func<TEntity, bool> filter)
where TSelect : class, new()
{
IEnumerable<TSelect> result = collection.Where(filter)
.Select(s => new TSelect().InjectFrom(s))
.Cast<TSelect>();

return result;
}

InjectFrom 来自 ValueInjecter库,它使用约定提供两种类型之间的映射。

关于c# - Linq 查询 - 创建通用子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9425366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com