C# 将元组项填充为字典中的列表
我的代码中有一个C# 将元组项填充为字典中的列表,c#,list,tuples,C#,List,Tuples,我的代码中有一个字典,在方法中定义为: public Dictionary<int, Tuple<List<int>, int, int, int>> GetAuthorData(int startYear, int endYear) { Dictionary<int, Tuple<List<int>>, int, int, int>> authorData; foreach (var pap
字典
,在方法中定义为:
public Dictionary<int, Tuple<List<int>, int, int, int>> GetAuthorData(int startYear, int endYear)
{
Dictionary<int, Tuple<List<int>>, int, int, int>> authorData;
foreach (var paper in Papers.Where(p => p.Year >= startYear && p.Year <= endYear))
{
authorData.Add(paper.PaperID,
new Tuple<List<int>, int, int, int>(
paper.CoAuthors, paper.PaperCategory, paper.VenueID, paper.Year)
);
}
return authorData;
}
鉴于类Paper.cs
定义为:
public List<Paper> Papers { get; set; }
public class Paper
{
// Class constructor
public Paper()
{ }
public int PaperID { get; set; }
public List<int> CoAuthors { get; set; }
public int VenueID { get; set; }
public int PaperCategory { get; set; }
public int Year { get; set; }
}
所需输出
PaperID: 1, CoAuthorID: 23, PaperCategory: 6, VenueID: 3454, Year: 2016
PaperID: 1, CoAuthorID: 24, PaperCategory: 6, VenueID: 3454, Year: 2016
PaperID: 1, CoAuthorID: 25, PaperCategory: 6, VenueID: 3454, Year: 2016
PaperID: 1, CoAuthorID: 26, PaperCategory: 6, VenueID: 3454, Year: 2016
PaperID: 2, CoAuthorID: 27, PaperCategory: 7, VenueID: 3455, Year: 2016
PaperID: 2, CoAuthorID: 28, PaperCategory: 7, VenueID: 3455, Year: 2016
PaperID: 2, CoAuthorID: 29, PaperCategory: 7, VenueID: 3455, Year: 2016
我们如何才能正确地添加到
合著者
列表中 您需要初始化字典:
public Dictionary<int, AuthorData> GetAuthorData(int startYear, int endYear)
{
var authorData = new Dictionary<int, AuthorData>();
foreach (var paper in Papers.Where(p => p.Year >= startYear && p.Year <= endYear))
{
Console.WriteLine(paper.CoAuthors.Count.ToString());
authorData.Add(paper.PaperID,
new AuthorData()
{
CoAuthors = paper.CoAuthors,
PaperCategory = paper.PaperCategory,
VenueID = paper.VenueID,
Year = paper.Year
});
Console.WriteLine("After");
Console.WriteLine(authorData.Last().Value.Count.ToString());
}
return authorData;
}
class AuthorData
{
public List<int> CoAuthors { set; get; }
public int PaperCategory { set; get; }
public int VenueID { set; get; }
public int Year { set; get; }
}
公共字典GetAuthorData(int startYear,int endYear)
{
var authorData=新字典();
foreach(var)文件中的文件。在哪里(p=>p.Year>=startYear&&p.Year列表元组词典?我认为您需要重新考虑您的模型!我已经将词典的结构定义为ID为int,value为ATuple@DavidG你能告诉我哪里错了,怎样才能标准化吗?我必须内联地堆叠所有这些值,除了Dic,我还能使用什么样的数据结构tionary?就我个人而言,我会一直在这里使用LINQ语法(ToDictionary
),问题是我已经展示了我使用这种方法的方式,即GetAuthorData()
,而不是在合著者中打印值请像这样给你的问题添加一个示例输出:“论文编号:100,合著者:??,论文类别:10,地点:5,年份:2016"
是的,您自己通过注释添加了示例,而?
将是合著者的ID
,如果PaperID=100
在列表中有多个合著者
,那么这个PaperID
和所有其他项目应该重复,只要我们在合著者中有元素
list@Ta然后,ufel将kvauthor.Value.CoAuthors
替换为String.Join(“,”,kvauthor.Value.CoAuthors)
public Dictionary<int, AuthorData> GetAuthorData(int startYear, int endYear)
{
var authorData = new Dictionary<int, AuthorData>();
foreach (var paper in Papers.Where(p => p.Year >= startYear && p.Year <= endYear))
{
Console.WriteLine(paper.CoAuthors.Count.ToString());
authorData.Add(paper.PaperID,
new AuthorData()
{
CoAuthors = paper.CoAuthors,
PaperCategory = paper.PaperCategory,
VenueID = paper.VenueID,
Year = paper.Year
});
Console.WriteLine("After");
Console.WriteLine(authorData.Last().Value.Count.ToString());
}
return authorData;
}
class AuthorData
{
public List<int> CoAuthors { set; get; }
public int PaperCategory { set; get; }
public int VenueID { set; get; }
public int Year { set; get; }
}
Dictionary<int, Author.AuthorData> tauthorData = eAuthor.GetAuthorData(year, year + 1);
foreach (var kvauthor in tauthorData)
{
foreach (var author in kvauthor.Value.CoAuthors)
{
tw.WriteLine("PaperID: {0}, CoAuthors: {1}, PaperCategory: {2}, Venue: {3}, Year: {4}",
kvauthor.Key, author, kvauthor.Value.PaperCategory,
kvauthor.Value.VenueID, kvauthor.Value.Year);
}
}