使用LINQ将两个实体合并为一个实体

时间:2017-02-26 15:40:12

标签: c# linq linq-to-entities

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

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

现在我正在尝试这样做,我正在尝试将这两个包含相同数量元素的列表组合在一起,在这种情况下,两个List都包含一个元素。到目前为止我尝试的是:

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

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

1 个答案:

答案 0 :(得分:9)

像这样使用npm ls

├─┬ react@15.4.2
│ ├─┬ fbjs@0.8.9
│ │ ├── core-js@1.2.7
│ │ ├─┬ isomorphic-fetch@2.2.1
│ │ │ ├─┬ node-fetch@1.6.3
│ │ │ │ └─┬ encoding@0.1.12
│ │ │ │   └── iconv-lite@0.4.15
│ │ │ └── whatwg-fetch@2.0.2
│ │ ├─┬ promise@7.1.1
│ │ │ └── asap@2.0.5
│ │ ├── setimmediate@1.0.5
│ │ └── ua-parser-js@0.7.12
│ └─┬ loose-envify@1.3.1
│   └── js-tokens@3.0.1
├── react-addons-create-fragment@15.3.2
├── react-addons-css-transition-group@15.3.2
├── react-addons-pure-render-mixin@15.3.2
├── react-addons-transition-group@15.3.2
├── react-addons-update@15.3.2
├── react-dom@15.4.2
├─┬ react-geomicons@2.1.0
│ └── geomicons-open@3.0.0-beta.2
├─┬ react-grid-layout@0.13.9
│ ├── lodash.isequal@4.5.0
│ ├── react-draggable@2.2.3
│ └── react-resizable@1.6.0
├─┬ react-hot-loader@1.3.1
│ ├── react-hot-api@0.4.7
│ └─┬ source-map@0.4.4
│   └── amdefine@1.0.1
├─┬ react-infinite@0.7.3
│ ├── lodash.isarray@3.0.4
│ ├── lodash.isfinite@3.2.0
│ ├── object-assign@4.0.1
│ ├─┬ react@0.14.8
│ │ ├─┬ envify@3.4.1
│ │ │ ├─┬ jstransform@11.0.3
│ │ │ │ ├── base62@1.1.2
│ │ │ │ ├─┬ commoner@0.10.8
│ │ │ │ │ ├── detective@4.3.2
│ │ │ │ │ ├── private@0.1.7
│ │ │ │ │ └─┬ recast@0.11.22
│ │ │ │ │   ├── ast-types@0.9.5
│ │ │ │ │   ├── esprima@3.1.3
│ │ │ │ │   └── source-map@0.5.6
│ │ │ │ ├── esprima-fb@15001.1.0-dev-harmony-fb
│ │ │ │ └── object-assign@2.1.1