如何从列表中添加数组并返回数组

时间:2016-01-22 09:22:45

标签: c# arrays ienumerable

我正在实习并遇到问题,我已经尝试解决了三天,请帮忙。

我的问题:我有一个数据列表,我必须将其转换为数组。

TemplateSummary[] TransformTemplates(IEnumerable<Template> templates)
    {
        foreach (Template template in templates)
        {
            template.ToArray();
        }
        return ();
    }

这不起作用,我尝试了一百万种不同的东西,我只是无法弄清楚。

模板:

在模板中:

public class Template:IEntity
{
    public virtual int Id { get; set; }
    public virtual string TemplateName { get; set; }
    public virtual string Content { get; set; }
}

在ExempelAccess中:

     public IEnumerable<Template> ListAllTemplates()
    {
        this.session.Query<Template>().ToList();
        return ListAllTemplates();
    }


    public int Create(string templateName, string content)
    {
        using (var tx = session.BeginTransaction())
        {
            var template = new Template { Content = content, TemplateName = templateName };
            session.Save(template);

            tx.Commit();
            return template.Id;
        }
    }

在ExempelEngine中:

TemplateSummary[] TransformTemplates(IEnumerable<Template> templates)
    {
        foreach (Template template in templates)
        {
            template.ToArray();
        }
        return ();
    }

Templatesummary:

在IExempelManager中:

public interface IExempelManager
{
    [OperationContract]
    TemplateSummary[] ListTemplates();
    [OperationContract]
    void Create(string templateName,  string content);
}
 [DataContract]
public class TemplateSummary
{
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string TemplateName { get; set; }
    [DataMember]
    public string Content { get; set; }
}

在ExempelManager中:

public TemplateSummary[] ListTemplates()
    {

        return ListTemplates();
    }

在ClientFactory中:

public TemplateSummary[] ListTemplates()
    {
        return Channel.ListTemplates();
    }

在ExempelViewModel

public ObservableCollection<TemplateSummary> TemplateSummaryResult { get; set; } 

在ExempelEngine中:

TemplateSummary[] TransformTemplates(IEnumerable<Template> templates)
    {
        foreach (Template template in templates)
        {
            template.ToArray();
        }
        return ();
    }

        public TemplateSummary[] ListTemplates()
    {

        return ();
    }

这些是解决方案中的所有参考资料。

3 个答案:

答案 0 :(得分:3)

根据this comment,您希望获得此方法

TemplateSummary[] TransformTemplates(IEnumerable<Template> templates)
{
    return templates.Select(x => new TemplateSummary 
        {
            Id = x.Id,
            TemplateName = x.TemplateName,
            Content = x.Content
        }).ToArray()
}

不要忘记在文件头包含using System.Linq;

答案 1 :(得分:1)

如果我可以假设有一种方法可以概括模板 - TemplateSummary SummarizeTemplate(Template template) - 那么这就是您所需要的:

TemplateSummary[] TransformTemplates(IEnumerable<Template> templates)
{
    return templates.Select(t => SummarizeTemplate(t)).ToArray();
}

要获得更详细的答案,您需要解释SummarizeTemplate的工作原理。

这就是你需要的:

TemplateSummary[] TransformTemplates(IEnumerable<Template> templates)
{
    return templates.Select(t => new TemplateSummary()
    {
        Id = t.Id,
        TemplateName = t.TemplateName,
        Content = t.Content,
    }).ToArray();
}

答案 2 :(得分:-1)

假设ToArray上的Template返回TemplateSummary[],问题可以使用SelectMany解析

TemplateSummary[] TransformTemplates(IEnumerable<Template> templates)
{
    return templates.SelectMany(i => i.ToArray()).ToArray();
}