首页 > 解决方案 > 选择列表中定义为枚举的项目C#

问题描述

我是 C# 的初学者。我想要做的是返回一个包含 4 个项目的列表。我在 BookList 中映射定义为枚举的电子书项目,我只想返回这些定义为枚举的项目。但是,Lib 类中有多个属性。我只是不知道如何从列表中返回它们。

如果我在注释行中执行相同操作,则列表中的所有属性都会返回。另外,我不能返回其他枚举项。我不知道该怎么做。

这是我的映射部分:

public static Book Map(Tax tax)
{
    Book b = new Book();
    b.BookList.Where(x => x.BookType == EBook.Type1).FirstOrDefault().Dual = tax.TaxType1;
    b.BookList.Where(x => x.BookType == EBook.Type2).FirstOrDefault().Dual = tax.TaxType2;

    b.BookList = new List<Lib> { new Lib() { BookType = EBook.Type1 } }; //here
}

书类:

public class Book
{
    public Book();
    public List<Lib> BookList { get; set; }
}

库类:

public class Lib: ILib
{
    public EBook BookType;
    public double Dual;
    .....
}

电子书部分:

public enum EBook
{
    Type1 = 1,
    Type2 = 2,
    Type3 = 3,
    Type4 = 4
}

税级:

public interface Tax
{
    double TaxType1 { get; set; }
    double TaxType2 { get; set; }
    double TaxType3 { get; set; }
    double TaxType4 { get; set; }
}

从 Postman 返回的 json 应该如下所示:

"BookList": [
{
    "Type1": 12.4,
    "Type2": 15.5,
    "Type3": 10.8,
    "Type4": 7.55
}]

它应该返回定义为枚举的项目的相应 TaxType 值。

标签: c#enumsautomapper

解决方案


似乎您只需要Lib使用各自的 TaxType 为每个 BookType 创建一个:

b.BookList = new List<Lib> 
{ 
    new Lib { BookType = EBook.Type1, Dual = tax.TaxType1 },
    new Lib { BookType = EBook.Type2, Dual = tax.TaxType2 },
    new Lib { BookType = EBook.Type3, Dual = tax.TaxType3 },
    new Lib { BookType = EBook.Type4, Dual = tax.TaxType4 }
};

推荐阅读