加入不同类型的项目到列表中的.Net [英] Add items of different type into list in .Net

查看:95
本文介绍了加入不同类型的项目到列表中的.Net的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想要添加项目到列表(项不同类型的)。下面是我怎么做。

I'm trying to add items into list (items are of different types). Here is how I'm doing it.

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

获取误差;

Getting error as;

的AddRange不能把2个参数。

AddRange can not take 2 arguments.

有关更好的可见性,我把我的JiraIssues这里:

For better visibility I'm putting my JiraIssues here:

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

我怎样才能解决售后服务做到这一点?我需要添加和报酬方法的所有字符串。

How can I slove do this? I need to add and return all the strings from method.

推荐答案

有几个问题。首先,调用 的AddRange 。这需要一个枚举的,像一个数组:

There are several issues. First, the call to AddRange. That takes an enumerable, like an array:

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

其次,最重要的是,该列表的类型,名单,其中,JiraIssues&GT; ,添加键入的字符串(与项目不符)。你不能做到这一点。这意味着上述code将无法正常工作......你的可以的更改列表的类型名单,其中,对象&gt; ,但这将使它不强类型的,我不建议这样做。

Second and most importantly, the type of the list, List<JiraIssues>, is incompatible with the items you add (of type string). You can't do that. That means the above code won't work... You can change the type of the list to List<object>, but that will make it not strongly-typed and I don't recommend to do that.

相反,你应该找到一种方法来转换字符串到 JiraIssues 实例,或者把它放在另一种类型的列表。

Instead, you should find a way to convert the string to a JiraIssues instance, or maybe put it in a list of another type.

假设 JiraIssues 有一个摘要申请人财产,那么你可以做:

Let's assume JiraIssues has a Summary and Assignee property, then you could do:

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

这篇关于加入不同类型的项目到列表中的.Net的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆