我有一个抽象类,我们称之为Fruit。
有两个类来自Fruit,我们称之为Apple和Pear。
我有一个功能需要返回苹果和梨,比如说它们的有效期。
它看起来像这样:
public Fruit[] GetFruitByDate(string date){
Apple[] apples=/*Linq result*/;
Pear[] pears=/*Linq result*/;
return apples+pears;//what do I do here?
}
如何返回两个结果?
感谢。
答案 0 :(得分:5)
如果你不得不继续施展你做错事,或者没有清楚地了解继承。因为Linq可以返回不同的类型,所以在= =不允许正确答案之后提出var并且没有实际代码的问题。我只是假设它返回并且某种类型的IEnnumarble。
public Fruit[] GetFruitByDate(string date){
List<Fruit> tResult = new List<Fruit>();
var apples=/*Linq result*/;
var pears=/*Linq result*/;
tResult.AddRange(apples);
tResult.AddRange(pears);
return tResult.ToArray();
}
答案 1 :(得分:4)
你可以这样做:
return apples.Cast<Fruit>().Concat(pears).ToArray();
同样Union
代替Concat
,但您可能不必担心比较这两种类型并对其进行重复数据删除。我听说将苹果与梨相比并不好(哦,等等,那是橙子)。
请务必包含此命名空间:
using System.Linq;
当你调用这个方法时,如果你需要回到子类成员,那么你需要对每个项目进行安全转换,或者通过调用.OfType<Apple>()
将类型分开。