2015-07-21 4 views
-4

Я пытаюсь добавить элементы в список (элементы разных типов). Вот как я это делаю.Добавить элементы различного типа в список .Net

private List<JiraIssues> GetIssues(string result) 
    { 
     string x = null; 
     var summary = x; 
     List<JiraIssues> returnResulttoReport = new List<JiraIssues>(); 
     RootObject myresult = JsonConvert.DeserializeObject<RootObject>(result); 
     foreach (var item in myresult.issues) 
     { 
      Console.WriteLine(item.fields.summary); 
      summary = item.fields.summary; 
      foreach (var commentitem in item.fields.comment.comments) 
      { 
       var authorname = commentitem.author.name; 
       Console.WriteLine(commentitem.author.name); 
      } 

     } 

     /*var vnlist = (from up in spcall 
         where up.Caption == "Contacted" 
         select new JiraIssues 
         { 
          summary, 
          authorname, 
          ActualDate, 
          Value = up.Value 
         }).ToList();*/ 
     returnResulttoReport.AddRange(summary,authorname); 
     return returnResulttoReport ; 
    } 

Получение ошибки as;

AddRange не может принимать 2 аргумента.

Для лучшей видимости я помещаю свои JiraIssues здесь:

[DataContract] 
public class JiraIssues 
{ 
    public JiraIssues() 
    { 
     Comments = new List<JiraComment>(); 
     //Components = new List<JiraComponent>(); 
    } 

    [DataMember(Order = 0)] 
    public string IssueKey; 

    [DataMember(Order = 1)] 
    public string Id; 

    [DataMember(Order = 2)] 
    public string Description; 

    [DataMember(Order = 3)] 
    public string Assignee; 

    [DataMember(Order = 4)] 
    public DateTime? Created; 

    [DataMember(Order = 5)] 
    public DateTime? Duedate; 

    [DataMember(Order = 6)] 
    public string Environment; 

    [DataMember(Order = 7)] 
    public string Priority; 

    [DataMember(Order = 8)] 
    public string Project; 

    [DataMember(Order = 9)] 
    public string Reporter; 

    [DataMember(Order = 10)] 
    public string Resolution; 

    [DataMember(Order = 11)] 
    public string Status; 

    [DataMember(Order = 12)] 
    public string Summary; 

    [DataMember(Order = 13)] 
    public string IssueType; 

    [DataMember(Order = 14)] 
    public DateTime? Updated; 

    [DataMember(Order = 15)] 
    public long? Votes; 

    [DataMember(Order = 16)] 
    public string Components; 

    [DataMember(Order = 17)] 
    public List<JiraComment> Comments; 
} 

[DataContract] 
public class JiraComment 
{ 
    [DataMember(Order = 0)] 
    public string CommentBody; 

    [DataMember(Order = 1)] 
    public string CommentAuthor; 

    [DataMember(Order = 2)] 
    public DateTime? CommentCreated; 

    [DataMember(Order = 3)] 
    public string CommentUpdateAuthor; 

    [DataMember(Order = 4)] 
    public DateTime? CommentUpdated; 

    [DataMember(Order = 5)] 
    public string CommentId; 

    [DataMember(Order = 6)] 
    public string CommentGroupLevel; 

    [DataMember(Order = 7)] 
    public string CommentParentKeyId; 

    [DataMember(Order = 8)] 
    public string CommentParentId; 
} 

Как я могу SLOVE это сделать? Мне нужно добавить и вернуть все строки из метода.

+0

ли '' Summary' и тип AuthorName' совместим с 'JiraIssues' вообще? –

+5

Документация ['Список .AddRange'] (https://msdn.microsoft.com/en-us/library/z883w3dc%28v=vs.110%29.aspx) ясна, на мой взгляд. Как насчет их добавления к другому 'AddRange' вместо этого? Но ваш 'summary' _already_ выглядит как' string'. Подумайте, вместо этого измените свою логику. Непонятно, что вы пытаетесь сделать. –

+0

Вы объявили returnResulttoReport как список JiraIssues. Единственный тип, который вы можете добавить в этот список, - JiraIssues. Метод AddRange() аналогичен методу Add(), за исключением того, что добавляет список JiraIssues в список. – HaukurHaf

ответ

2

Существует несколько вопросов. Во-первых, звонок AddRange. Это занимает перечислимого, как массив:

returnResulttoReport.AddRange(new string[] { summary, authorname }); 

Во-вторых, и самое главное, тип списка, List<JiraIssues>, несовместима с деталями вы добавляете (типа string). Вы не можете этого сделать. Это означает, что приведенный выше код не будет работать ... Вы можете изменить тип списка на List<object>, но это не сделает его строго типизированным, и я не рекомендую это делать.

Вместо этого вы должны найти способ преобразования строки в экземпляр JiraIssues или, возможно, поместить его в список другого типа.

Давайте предположим, что JiraIssues имеет Summary и Assignee недвижимость, то вы можете сделать:

returnResulttoReport.Add(new JiraIssues() { Summary = summary, Assignee = authorname }); 
+0

Я изменил свой вопрос, чтобы получить четкое изображение. – AskMe

+0

@TryingBest: измененный код немного. –

+0

Если некоторые пользователи так себя чувствуют, некоторые пользователи так чувствуют это. Не беспокойтесь об этом. –

Смежные вопросы