定义一个 KeyValuePair 结构,例如 <int,List<string>>
Define a KeyValuePair struct like <int,List<string>>
我正在做一个在线论坛项目,我想对文章添加一些评论。
在我的想象中,我可能需要创建一些类似KeyValuePair <int,List<string>>
的结构。每篇文章都有自己的titleNum
,用于记录文章编号。
在我的程序中,应该是这样的
public void addcomment(int titleNum, string comment)
{
int title =
using Data = System.Collections.Generic.KeyValuePair<int, List<string>>
List<string> a = new List<string>;
a.add(comment)
//then append List a to Data
}
public List<string> getComment (int inputTitleNum)
{
//return string List which titleNum = inputTitleNum
}
但是,我现在不知道该怎么办。最后的结果,应该是这样的。
当我输入 inputTitleNum
到 getComment
函数时,它应该 return a commentList
.
首先,您所写的 C# 无效。它应该是这样的:
private KeyValuePair<int, List<string>> Data {get; set; }
那么您的 addComment 函数将如下所示:
public void addComment(int titleNum, string comment) {
if (!this.Data.ContainsKey(titleNum) {
this.Data.Add(titleNum, new List<string>());
}
this.Data[titleNum].Add(comment);
}
和getComment:
public List<string> getComment(int titleNum) {
return this.Data[titleNum];
}
根据 KeyValuePair 合同,您将通过
检索它
关于你的方法本身,如果你有很多评论或者你想形成关联,你应该使用数据库。等等与日期、用户相关联。检索等会更快。考虑查找 SQLite,它是一个存储为文本文件的数据库。
如果您只是对使用列表感到满意,那么这应该可行:
public class Article
{
public Dictionary<int, List<string>> articleComments = new Dictionary<int, List<string>>();
public void AddComment(int titleNum, string comment)
{
if (!articleComments.ContainsKey(titleNum))
{
articleComments.Add(titleNum, new List<string>());
}
articleComments[titleNum].Add(comment);
}
public List<string> GetComment(int titleNum)
{
if (articleComments.ContainsKey(titleNum)
{
return articleComments[titleNum];
}
return null;
}
}
如果我为此目的正确理解你的问题,你可以使用 Dictionary<int, List<string>>
Dictionary<int, List<string>> articles = new Dictionary<int, List<string>>();
public void AddComment(int titleNum, string comment)
{
if(!articles.Keys.Contains(titleNum)) articles.Add(titleNum, new List<string>());
articles[titleNum].Add(comment);
}
public List<string> getComment (int titleNum)
{
return articles[titleNum];
}
但您应该真正考虑使用 Entity Framework、SQL 数据库和存储库。之后,您可以使用评论和文章模型来处理数据库中的数据。您甚至可以创建和使用视图模型(例如 CommentList)来查看您的数据。
假设您的数据库中有评论实体,如下所示:
public class Comment
{
public long Id { get; set; }
public string Title{ get; set; }
public string Text { get; set; }
public long ArticleId { get; set; }
}
实体文章是这样的:
public class Article
{
public long Id{ get; set; }
public string Header { get; set; }
public string Text { get; set; }
public long AuthorId { get; set; }
}
现在您可以将方法添加到您的存储库 class 以使用该模型:
public class Repository : IRepository
{
....
private MyDbContext _cont;
public Comment getComment (int Id)
{
return _cont.Comments.FirstOrDefault(c => c.Id == Id);
}
public List<Comments> GetCommentsList(int articleId)
{
return _cont.Comments.Where(c => c.ArticleId == aricleId).ToList();
}
}
然后在你的控制器中这样使用它:
public ActionResult GetComments(long Id)
{
object model = List<Comment> comments = Repo.GetCommentsList(Id);
return View(model);
}
使用字典来执行此操作并不是最佳方法,尤其是当您决定使用数据库时。您应该在文章 class.
中存储评论列表
public class Article
{
public int ArticleNum { get; set; }
public string Creator { get; set; }
public DateTime DateCreated { get; set; }
public List<string> Comments { get; set; }
public Article()
{
this.Comments = new List<string>();
}
public void AddComment(string comment)
{
this.Comments.Add(comment);
}
public void RemoveComment(string comment)
{
this.Comments.Remove(comment);
}
}
您也可以删除评论的字符串列表并创建评论 class 并改为使用评论列表。
public class Article
{
public int ArticleNum { get; set; }
public string Creator { get; set; }
public DateTime DateCreated { get; set; }
public List Comments { get; set; }
public Article()
{
this.Comments = new List<Comment>();
}
public void AddComment(Comment comment)
{
this.Comments.Add(comment);
}
public void RemoveComment(Comment comment)
{
this.Comments.Remove(comment);
}
}
public class Comment
{
public string Comment { get; set; }
public string Creator { get; set; }
public DateTime DateCreated { get; set; }
}
我正在做一个在线论坛项目,我想对文章添加一些评论。
在我的想象中,我可能需要创建一些类似KeyValuePair <int,List<string>>
的结构。每篇文章都有自己的titleNum
,用于记录文章编号。
在我的程序中,应该是这样的
public void addcomment(int titleNum, string comment)
{
int title =
using Data = System.Collections.Generic.KeyValuePair<int, List<string>>
List<string> a = new List<string>;
a.add(comment)
//then append List a to Data
}
public List<string> getComment (int inputTitleNum)
{
//return string List which titleNum = inputTitleNum
}
但是,我现在不知道该怎么办。最后的结果,应该是这样的。
当我输入 inputTitleNum
到 getComment
函数时,它应该 return a commentList
.
首先,您所写的 C# 无效。它应该是这样的:
private KeyValuePair<int, List<string>> Data {get; set; }
那么您的 addComment 函数将如下所示:
public void addComment(int titleNum, string comment) {
if (!this.Data.ContainsKey(titleNum) {
this.Data.Add(titleNum, new List<string>());
}
this.Data[titleNum].Add(comment);
}
和getComment:
public List<string> getComment(int titleNum) {
return this.Data[titleNum];
}
根据 KeyValuePair 合同,您将通过
检索它关于你的方法本身,如果你有很多评论或者你想形成关联,你应该使用数据库。等等与日期、用户相关联。检索等会更快。考虑查找 SQLite,它是一个存储为文本文件的数据库。
如果您只是对使用列表感到满意,那么这应该可行:
public class Article
{
public Dictionary<int, List<string>> articleComments = new Dictionary<int, List<string>>();
public void AddComment(int titleNum, string comment)
{
if (!articleComments.ContainsKey(titleNum))
{
articleComments.Add(titleNum, new List<string>());
}
articleComments[titleNum].Add(comment);
}
public List<string> GetComment(int titleNum)
{
if (articleComments.ContainsKey(titleNum)
{
return articleComments[titleNum];
}
return null;
}
}
如果我为此目的正确理解你的问题,你可以使用 Dictionary<int, List<string>>
Dictionary<int, List<string>> articles = new Dictionary<int, List<string>>();
public void AddComment(int titleNum, string comment)
{
if(!articles.Keys.Contains(titleNum)) articles.Add(titleNum, new List<string>());
articles[titleNum].Add(comment);
}
public List<string> getComment (int titleNum)
{
return articles[titleNum];
}
但您应该真正考虑使用 Entity Framework、SQL 数据库和存储库。之后,您可以使用评论和文章模型来处理数据库中的数据。您甚至可以创建和使用视图模型(例如 CommentList)来查看您的数据。
假设您的数据库中有评论实体,如下所示:
public class Comment
{
public long Id { get; set; }
public string Title{ get; set; }
public string Text { get; set; }
public long ArticleId { get; set; }
}
实体文章是这样的:
public class Article
{
public long Id{ get; set; }
public string Header { get; set; }
public string Text { get; set; }
public long AuthorId { get; set; }
}
现在您可以将方法添加到您的存储库 class 以使用该模型:
public class Repository : IRepository
{
....
private MyDbContext _cont;
public Comment getComment (int Id)
{
return _cont.Comments.FirstOrDefault(c => c.Id == Id);
}
public List<Comments> GetCommentsList(int articleId)
{
return _cont.Comments.Where(c => c.ArticleId == aricleId).ToList();
}
}
然后在你的控制器中这样使用它:
public ActionResult GetComments(long Id)
{
object model = List<Comment> comments = Repo.GetCommentsList(Id);
return View(model);
}
使用字典来执行此操作并不是最佳方法,尤其是当您决定使用数据库时。您应该在文章 class.
中存储评论列表public class Article { public int ArticleNum { get; set; } public string Creator { get; set; } public DateTime DateCreated { get; set; } public List<string> Comments { get; set; }
public Article()
{
this.Comments = new List<string>();
}
public void AddComment(string comment)
{
this.Comments.Add(comment);
}
public void RemoveComment(string comment)
{
this.Comments.Remove(comment);
}
}
您也可以删除评论的字符串列表并创建评论 class 并改为使用评论列表。
public class Article { public int ArticleNum { get; set; } public string Creator { get; set; } public DateTime DateCreated { get; set; } public List Comments { get; set; }
public Article()
{
this.Comments = new List<Comment>();
}
public void AddComment(Comment comment)
{
this.Comments.Add(comment);
}
public void RemoveComment(Comment comment)
{
this.Comments.Remove(comment);
}
}
public class Comment
{
public string Comment { get; set; }
public string Creator { get; set; }
public DateTime DateCreated { get; set; }
}