gpt4 book ai didi

c# - 使用 LINQ 将两个实体合二为一

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:53 24 4
gpt4 key购买 nike

我正在尝试将我的两个不同实体组合成一个新实体。这是我的类(class)实体的示例:

public class CarOne
{
public string Name { get; set; }

public string Model { get; set; }

}

public class CarTwo
{
public int Year { get; set; }

public string Description { get; set; }

}

现在我想将我所有的两个实体列表保存到这个新实体中:
public class CarFinal
{
public string Name { get; set; }

public string Model { get; set; }

public int Year { get; set; }

public string Description { get; set; }

}

这是我的代码示例:
        CarOne carToyota = new CarOne()
{
Name = "Toyota",
Model = "Camry"
};

CarTwo carDetails = new CarTwo()
{
Year = 2012,
Description = "This is a great car"
};

List<CarOne> lstFirst = new List<CarOne>();
lstFirst.Add(carToyota);

List<CarTwo> lstSecond = new List<CarTwo>();
lstSecond.Add(carDetails);

现在这就是我想要做的,我试图将这两个包含相同数量元素的列表组合起来,在这种情况下,两个列表都包含一个元素数量。到目前为止,我尝试过的是:
        var result1 = lstFirst.Select(x => new CarFinal
{
Name = x.Name,
Model = x.Model
}).ToList();

var result2 = lstSecond.Select(x => new CarFinal
{
Year = x.Year,
Description = x.Description
}).ToList();

List<CarFinal> lstFinal = new List<CarFinal>();
lstFinal = result1.Union(result2).ToList();

我也试过:
        lstFinal = result1.Concat(result2).ToList();

但是这两种方法的输出都会产生两个元素,这就是我试图将所有属性组合成一个。我只期望一个实体作为结果,但我总是在我的组合中得到两个元素。

最佳答案

使用Zip像这样:

var finalList = lstFirst.Zip(lstSecond, (c1, c2) => new CarFinal()
{
Name = c1.Name,
Model = c1.Model,
Description = c2.Description,
Year = c2.Year
}).ToList();

关于c# - 使用 LINQ 将两个实体合二为一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42470542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com