class cuentaBancaria
{
public cuentaBancaria()
{
}
public cuentaBancaria(string nombreCliente, string numCuenta, double tipoInteres, double saldo)
{
this.nombreCliente = nombreCliente;
this.numCuenta = numCuenta;
this.tipoInteres = tipoInteres;
this.saldo = saldo;
}
public string nombreCliente { get; set; }
public string numCuenta { get; set; }
public double tipoInteres { get; set; }
public double saldo { get; set; }
public static List<cuentaBancaria> cuentas = new List<cuentaBancaria>()
{
new cuentaBancaria ("John Doe", "123456", 1.5, 159),
new Tarjeta ("John Doe", "123456" , 1.5, 159, "123456789012", "John Doe", TipoTarjeta.CREDITO)
};
}
蒂波塔里塔:
enum TipoTarjeta
{
CREDITO,
DEBITO,
MONEDERO,
FINANCIACION
}
塔杰塔:
class Tarjeta : cuentaBancaria
{
public Tarjeta()
{
}
public Tarjeta(string nombreCliente, string numCuenta, double tipoInteres, double saldo, string numTarjeta, string nombre, TipoTarjeta tipoTarjeta)
{
base.nombreCliente = nombreCliente;
base.numCuenta = numCuenta;
base.tipoInteres = tipoInteres;
base.saldo = saldo;
this.numTarjeta = numTarjeta;
this.nombre = nombre;
this.tipoTarjeta = tipoTarjeta;
}
public string numTarjeta { get; set; }
public string nombre { get; set; }
public TipoTarjeta tipoTarjeta { get; set; }
}
我想返回具有tipotarjeta.xxx的元素,但是当我尝试
cuentas.Where(c => c.tipoTarjeta == tipo)
我得到的错误是一个子元素(Tarjeta),而不是cuentabancaria。
我怎么才能只获得那些具有该类型的元素呢?
类型不匹配。
函数声明为返回列表
,但其中
是返回IEnumerable
的LINQ扩展方法。
要解决您的问题,请添加对ToList()
扩展方法的调用,如下所示:
cuentas.where(c=>c.tipotarjeta==tipo).toList()
更新
我把你的代码复制到VSCode,这个版本的Main为我工作。据我所知,您需要通过cuentabancaria
引用cuentas
;另外,根据类定义,您在where
子句中引用的属性是不正确的。
public static void Main()
{
var tipo = 3.15;
var result = cuentaBancaria.cuentas.Where(c => c.tipoInteres == tipo).ToList();
foreach (var item in result)
{
Console.WriteLine(item.tipoInteres);
}
}
您首先需要将列表筛选为仅Tarjeta
的类型,然后可以按Tarjeta
的属性进行筛选。您可以使用LINQ中的.ofType
执行此操作:
cuentas.OfType<Tarjeta>().Where(c => c.tipoTarjeta == tipo)