【问题标题】:List to list conversion in C#C#中的列表到列表转换
【发布时间】:2019-01-04 03:19:51
【问题描述】:

这个映射正确吗?列表可以有多行

我很想知道是否说列表包含 3 行,并且所有 3 行都将被映射?还是我们需要循环?

public List<Data> DataDetails { get; set; }

public static DataDetails ToDataConvert ( this Datadto data)
{

 DataDetails = dto.DataDetails.Select(x => new Data()
                        {
                            Name = x.Name,
                            id = x.Id
                        })
                        .ToList()
}

【问题讨论】:

  • 它可以编译吗?这通常是一个非常好的迹象。 LINQ .Select 操作是一个投影,它选择您感兴趣的数据列,但返回所有行。有点令人困惑的是,LINQ .Where 操作是一个选择,它挑选出哪些行应该在结果中。见:stackoverflow.com/questions/1031076/…
  • 这个方法的返回类型应该是List而不是DataDetails。
  • 这段代码不会编译,而且有几个级别的错误,我们不能帮助你,因为这不是你真正的尝试或真正的代码
  • @Xiaosu:谢谢,我有很好的代码,但只是想仔细检查一下我在做什么(我的意图是映射列表到列表)是否正确

标签: c# .net list wcf c#-4.0


【解决方案1】:

我不知道这是从哪里来的dto (dto.DataDetails)

这个dto.DataDetails 取决于你创建了多少行。

您的代码:

DataDetails = dto.DataDetails.Select(x => new Data
                        {
                            Name = x.Name,
                            id = x.Id
                        })
                        .ToList()

您的DataDetails 取决于此public List&lt;Data&gt; DataDetails { get; set; } Data 列表

作为您的DataDetails 的结果取决于这部分代码:

     {
         Name = x.Name,
          id = x.Id
     })

如果你的Data 类看起来像这样

public String Name {get;set;}
public int id{get;set;}
public String Address {get;set;}

这意味着您没有将Data 类的Address 作为示例。 作为结果,您可以获得 Address,但它返回的值为 null。

现在如果你的 linq 看起来像这样:

dto.DataDetails.ToList()

这将包括您想要获取的所有记录,但您需要使用此类 DataDetails 作为变量,例如:

VarFromDataDetailsClass =  dto.DataDetails.ToList();

var Result =  dto.DataDetails.ToList();

【讨论】:

    【解决方案2】:

    您似乎想在 c# 中使用扩展方法并转换列表。 如果是这样,我建议您可以使用转换后的列表作为方法的返回值。我的扩展方法转换 List 类型的对象

    namespace ServiceInterface.Models
    {
    public static  class ExtensionClass
    {
    
        public static List<Customer> ConvertCustomer(this List<Customer> customers)
        {
            return customers.Select(
                c =>
    
                new Customer
                {
                    FirstName = c.FirstName + " " + c.LastName,
                    LastName = "",
                    Gender = c.Gender
                }).ToList();
        }
    }
    }
    

    然后你可以写使用扩展方法如下。请不要忘记导入扩展方法的命名空间。

    using ServiceInterface.Models;
    namespace consoleClient.Message_exe
    {
        class StringTest
        {
        static void Main(string[] args)
        {
                 List<Customer> customers = new List<Customer>()
            {
                new Customer{LastName="a", FirstName="b"},
                new Customer{LastName="c", FirstName="d"}
            };
    
        }
    }
    

    结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-12
      • 1970-01-01
      • 2023-02-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2021-09-28
      • 1970-01-01
      相关资源
      最近更新 更多