提问者:小点点

返回列表<>继承C#


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。

我怎么才能只获得那些具有该类型的元素呢?


共2个答案

匿名用户

类型不匹配。

函数声明为返回列表,但其中是返回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)