簡體   English   中英

C# 如何向列表添加元素<string> ?</string>

[英]C# How to add an element to List<string>?

如何將元素電影添加到現有類別元素? 目前我只能在兩個字段上創建新的列表條目。

class MovieSolver
    {
        public string Category { get; set; }
        public List<string> Movie { get; set; }
    }
class CreateMovieList
    {
        readonly static List<MovieSolver> playerTargetList = new List<MovieSolver>();

        public static void MovieCBO()
        {
            playerTargetList.Add(new MovieSolver { Category = "Action", Movie = new List<string> { "Taken", "The Factory", "Wind River" } });
            playerTargetList.Add(new MovieSolver { Category = "Comedy", Movie = new List<string> { "Gold", "Hangover", "We are the Millers" } });
            playerTargetList.Add(new MovieSolver { Category = "Thriller", Movie = new List<string> { "Jack Reacher", "Real Steel", "Iron Man I" } });
        }
    }

除了有更聰明的方法來創建class MovieSolver嗎?

首先,我在這里根本找不到一個 int 列表。

如果要將新字符串 object 添加到 MoveiSolver object 中的列表,您首先需要找到要添加新字符串元素的 Moviesolver object。

您可以使用 for 循環、foreach 循環或 LINQ 來執行此操作。

對於新程序員來說,foreach 通常是最容易理解的。

Foreach item in playerTargetList
{
 if(item.category == "Action")
 {
  item.Movie.add("lorum ipsum");
 }
}

你為什么不在這里使用像Dictionary<string, List<string>>這樣的默認值 class?

//Add library reference
using System.Collections.Generic;

public void MyMethod()
{
    //Initialize a Dictionary
    Dictionary<string, List<string>> MovieCBO = new Dictionary<string, List<string>>();
    //Check if its an existing category
    //If its an existing category, add the movie to existing list
    if (MovieCBO.ContainsKey("some_category"))
    {
        MovieCBO["some_category"].Add("new_movie_name");
    }
    //If its a new category, add category along the movie
    else
    {
        MovieCBO.Add("some_category", new List<string>() { "new_movie_name" });
    }
}

所有操作都將在恆定時間內完成。 這比遍歷列表中的所有項目並檢查類別要快得多。

您可以將方法addMovie添加到 class CreateMovieList以驗證 MovieSolver 是否尚不存在並在必要時創建它

public static void addMovie(String category, String movie) 
{
    var movieSolver = playerTargetList.Find(e => e.Category == category);
    if(movieSolver != null) 
    {
        var existingMovie = movieSolver.Movie.Find( e => e == movie);
        if (existingMovie == null)
            movieSolver.Movie.Add(movie);
    }
    else
        playerTargetList.Add(new MovieSolver  { Category = category, Movie = new List<string> { movie } }); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM