c# - 使用 LINQ 将 List<U> 转换为 List<T>

标签 c# linq list .net-3.5 casting

我有 2 个类,它们具有一些相同的属性。 我从第一类存入列表属性,然后,我想获取一些需要的属性并将它们放入第二类类型的列表中。 我已经通过 C# 制作了转换序列并且运行正常,但我必须使用 LINQ。我试图做一些事情,但没有很好的结果。请帮助我提出建议。

第一类:

   public class ServiceInfo {
    private long _id;
    public long ID {
        get { return this._id; }
        set { _id = value; }
    }

    private string _name;
    public string Name {
        get { return this._name; }
        set { _name = value; }
    }

    private long _qty;
    public long Quantity {
        get { return this._qty; }
        set { _qty = value; }
    }

    private double _amount;
    public double Amount {
        get { return this._amount; }
        set { _amount = value; }
    }

    private string _currency;
    public string Currency {
        get { return this._currency; }
        set { _currency = value; }
    }

    private DateTime? _date;
    public DateTime? Date {
        get { return this._date; }
        set { _date = value; }
    }
}

第二类:

class InvoiceWithEntryInfo {
    private string currencyField;

    private long IdField;
    public long IdIWEI {
        get { return this.IdField; }
        set { IdIWEI = value; }
    }

    private string nameField;
    public string NameIWEI {
        get { return this.nameField; }
        set { NameIWEI = value; }
    }

    private long qtyField;
    public long QuantityIWEI {
        get { return this.qtyField; }
        set { QuantityIWEI = value; }
    }

    private double amountField;
    public double AmountIWEI {
        get { return this.amountField; }
        set { AmountIWEI = value; }
    }
    
    private DateTime dateField;
    public DateTime? DateIWEI {
        get { return this.dateField; }
        set { DateIWEI = value; }
    }

    public string OwnerIWEI {
        get; set;
    }
}

运行正常的 C# 示例: ...

var sil = new List<ServiceInfo>();
var iweil = new List<InvoiceWithEntryInfo>();

...

if (sil != null)
    {
        foreach (ServiceInfo item in sil)
        {
            iweil.Add(new InvoiceWithEntryInfo
                {
                    IdIWEI = item.ID,
                    AmountIWEI = item.Amount,
                    DateIWEI = item.Date
                });
        }

无法正常运行的 LINQ 示例:

iweilCOPY = sil.ConvertAll<InvoiceWithEntryInfo>(a => (InvoiceWithEntryInfo)a);

iweilCOPY = sil.FindAll(a => (sil is InvoiceWithEntryInfo)).ConvertAll<InvoiceWithEntryInfo>(a => (InvoiceWithEntryInfo)a);

最佳答案

var iweilCopy = sil.Select(item => new InvoiceWithEntryInfo()
{
  IdWEI = item.Id,
  NameWEI = item.Name,
  ....
}).ToList();

关于c# - 使用 LINQ 将 List<U> 转换为 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075572/

相关文章:

python - 从列表中随机选择子例程

c# - 转换字符串值的速记

c# - 查看包未更新

c# - 扩展方法中的两种泛型类型

Java,从文件中读取对象并将它们添加到数组列表中

C# 从 List<string[]> 中删除重复项

c# - 使用 API 从 Azure blob 下载

c# - 提取脚本标签的正则表达式

linq - 如何使用 Linq 和 Entity Framework 连接两个可连接对象?

.net - 在 XML 属性上使用冒号字符时出错