如何从列表和 return 数组添加到数组

How to add to array from list and return array

我在实习,有一个问题想解决了三天,请大家帮忙

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

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

模板摘要:

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

这些是解决方案中的所有引用。

假设 Template returns TemplateSummary[] 上的 ToArray 问题可以使用 SelectMany

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

如果我可以假设有一种方法可以总结模板 - 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();
}

根据你要得到这个方法

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

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