【发布时间】:2011-08-24 11:46:43
【问题描述】:
假设我有一个名为GetCatsByColor 的方法将颜色作为字符串,GetCatsByName 方法将名称作为字符串,GetCatsByBirthDate 将两个DateTimes 用作时间范围.
现在假设我有一个CatFilter 类,它包含一个名称List、颜色List 和两个DateTimes,代表时间跨度的“开始”日期和“结束”日期。我要做的是创建一个GetFilteredCats 方法,该方法采用其中一个Filter 对象并返回满足给定Filter 规范的Cats 集合。
我很难想出一种有效的方法来获得所需的结果,最好是使用 LINQ/lambda 表达式。
进行这种连接的最佳方法是什么?我应该查看哪些扩展方法?在foreach 循环中修改集合通常是不可取的/不可能的,那么我的策略应该是什么?
【问题讨论】:
-
高效 = 性能或清洁度和易于编码?
-
我正在寻找一种高性能的解决方案,但如果您有一个优雅的解决方案,但在时间复杂度方面不一定是最有效的,我会全力以赴。
-
说你有过滤器
{ { 'Garfield' }, { 'yellow' } }。你想要所有命名为 Garfield AND Yellow 的猫还是命名为 Garfield OR yellow 的猫? -
@svick:我想要一只名叫加菲猫和黄色的猫。
标签: c# linq collections join lambda