首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq查询-创建通用子集

Linq查询-创建通用子集
EN

Stack Overflow用户
提问于 2012-02-24 12:23:09
回答 1查看 169关注 0票数 3

我正在尝试设计一个泛型方法,该方法处理say员工的集合。employee类大约有5到10个属性。我希望能够传递一个筛选器并返回一个(通用的)集合类EmployeeSummary,其中包含Employee类的一些属性。

代码语言:javascript
复制
public T GetFilteredSubset<T>(Somecollection employeeList, filter)

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

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

EN

回答 1

Stack Overflow用户

发布于 2012-02-24 12:44:07

我不确定这是不是最好的答案,但是这个呢?

代码语言:javascript
复制
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库,该库使用约定提供两种类型之间的映射。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9425366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档