如何将特定数据存储到具有类的列表中

本文关键字:列表 存储 数据 | 更新日期: 2023-09-27 17:57:27

我想问一下如何将数据存储到列表中,但不是像这样的所有数据,类别:

public class CategoryEnt
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
    public int ParentID { get; set; }
    public bool IsDisplayed { get; set; }
    public bool IsTopCat { get; set; }
    public bool IsTrending { get; set; }
    public int SequenceID { get; set; }
    public string Filtering { get; set; }
    public string ImageURL { get; set; }
}

我只想添加到列表CategoryID,CategoryName,ImageUrl

 while (reader.Read())
                {
                    CategoryEnt category = new CategoryEnt();
                    category.CategoryID = Convert.ToInt32(reader["CategoryID"]);
                    category.CategoryName = reader["CategoryName"].ToString();
                    category.ImageURL = reader["ImageURL"].ToString();
                    list.Add(category);
                }

现在,剩下的数据包括,但默认值为null,我不想把剩下的数据包含在列表中。如何只存储要列出的特定数据?有线索吗?

如何将特定数据存储到具有类的列表中

您不能直接做到这一点,但可以通过使用以下代码间接实现:

List<CategoryEnt> CategoryEntList = new List<CategoryEnt>();       
while (reader.Read())
{
    CategoryEntList.Add(new CategoryEnt(){ 
    CategoryID = Convert.ToInt32(reader["CategoryID"]),
    CategoryName = reader["CategoryName"].ToString(),
    ImageURL = reader["ImageURL"].ToString(),
    });
}
var requiredValues = CategoryEntList.Select(x => new 
                                    { CategoryID = x.CategoryID, 
                                      CategoryName = x.CategoryName, 
                                      ImageURL = x.ImageURL 
                                    }).ToList();

现在requiredValues是一个列表,它将只包含您在Select中指定的值。您可以继续操作;

尝试一个只包含所需信息的类。类似于:

public class Category
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
    public string ImageURL { get; set; }
}

然后你可以使用创建你的原始类

public class CategoryEnt
{
    public Category CategoryPrimaryDetails { get; set; }
    public int ParentID { get; set; }
    public bool IsDisplayed { get; set; }
    public bool IsTopCat { get; set; }
    public bool IsTrending { get; set; }
    public int SequenceID { get; set; }
    public string Filtering { get; set; }
}

您的原始代码变为:

List<Category> list = new List<Category>();
while (reader.Read())
{
    Category category = new Category() {
      CategoryID = Convert.ToInt32(reader["CategoryID"]);
      CategoryName = reader["CategoryName"].ToString();
      ImageURL = reader["ImageURL"].ToString()
    }
    list.Add(category);
    CategoryEnt detailedCategory = new CategoryEnt() {CategoryPrimaryDetails = category};
 }