【发布时间】:2015-02-19 08:48:08
【问题描述】:
我有这个类结构
public class A
{
int number;
}
public class B : A
{
int otherNumber;
}
我想在A 的列表中搜索项目,其中number 大于给定值并且otherNumber 大于另一个给定值(如果它们的类型为B)。我正在寻找类似的东西:
var results = list.Where(x => x.number>5 && x.otherNumber>7).ToList();
其中list 是List<A>。
我目前的做法是:
var results = list.Where(x => x.number>5);
foreach(var result in results)
{
B b = result As B;
if(b!=null && b.otherNumber>7)
[...]
}
【问题讨论】:
-
你可以编写一个自定义比较器,或者一个可覆盖的比较函数,5 和 7 显然不是硬编码在实际代码中的,对吧?如果您提供了问题的描述,而不是您尝试解决未知问题的问题,我们可能会更有帮助。
-
你是对的,数字不是硬编码的。事实上,它们甚至不是整数。我试图把问题写得尽可能简单易行。我认为提供的答案是一个很好的方法,正是我所需要的。更多详细信息:我尝试在列表中找到具有最佳属性的
A。一些As 有更多的信息,可以考虑,但我不确定我能做到这一点。
标签: c# linq list search inheritance