Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将元组项填充为字典中的列表_C#_List_Tuples - Fatal编程技术网

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);
    }
}