我正在开展一个在线论坛项目,我想对这篇文章添加一些评论。
在我的想象中,我可能需要创建一些像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
时,它应返回commentList
。
答案 0 :(得分:3)
如果我为此正确理解您的问题,您可以使用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数据库和Repository。之后,您可以使用“注释”和“文章”模型来处理数据库中的数据。您甚至可以创建和使用视图模型,例如CommentList,以便查看数据。
我们假设您的数据库中有Comment实体,如下所示:
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; }
}
现在,您可以向Repository类添加适用于该模型的方法:
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);
}
答案 1 :(得分:2)
关于您的方法本身,如果您有很多评论或想要形成关联,则应使用数据库。等与日期,用户相关联。它的检索速度更快等。考虑查找SQLite,它是一个存储为文本文件的数据库。
如果您对使用列表感到满意,那么这应该可行:
data
答案 2 :(得分:0)
首先,你所写的是无效的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合约,您可以通过
检索它答案 3 :(得分:0)
使用字典执行此操作不是最佳方法,尤其是在您决定使用数据库时。您应该在Article类中存储注释列表。
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);
}
}
您还可以删除注释的字符串列表并创建注释类并改为使用注释列表。
公共类文章 { public int ArticleNum {get;组; } public string Creator {get;组; } public DateTime DateCreated {get;组; } 公共列表评论{get;组; }
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; }
}