第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從一個對象列表復(fù)制到具有相同結(jié)構(gòu)的另一個對象列表

從一個對象列表復(fù)制到具有相同結(jié)構(gòu)的另一個對象列表

C#
德瑪西亞99 2022-11-13 16:00:02
如何將所有對象從一個對象列表復(fù)制到另一個對象列表。這兩個對象具有相同的結(jié)構(gòu)但名稱不同。這是代碼: class Program{    static void Main(string[] args)    {        List<Test> lstTest = new List<Test>();        List<Test2> lstTest2 = new List<Test2>();        lstTest.Add(new Test { Name = "j", Score = 2 });        lstTest.Add(new Test { Name = "p", Score = 3 });        lstTest2 = lstTest.ConvertAll(x => (Test)x);    }}class Test{    private string name;    private int score;    public string Name    {        get { return name;  }        set { this.name = value; }    }    public int Score    {        get { return score; }        set { this.score = value; }    }}class Test2{    private string name;    private int score;    public string Name    {        get { return name; }        set { this.name = value; }    }    public int Score    {        get { return score; }        set { this.score = value; }    }}我得到的錯誤是無法將類型隱式轉(zhuǎn)換System.Collections.Generic.List<Test> 為System.Collections.Generic.List<cTest2>
查看完整描述

3 回答

?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個贊

如果您不想使用 automapper 或其他映射工具,您可以使用 select 和 new instance 這樣做,然后返回一個列表:


lstTest2 = lstTest.Select(e => new Test2()

{

    Score = e.Score,

    Name = e.Name

}).ToList();

在 Automapper 的情況下,您可以執(zhí)行以下操作:


var config = new MapperConfiguration(cfg => {


    cfg.CreateMap<Test, Test2>();

});

IMapper iMapper = config.CreateMapper();

lstTest2 = iMapper.Map<List<Test>, List<Test2>>(lstTest);

在配置中定義類型轉(zhuǎn)換。將它從一種映射到另一種類型。


您當(dāng)然可以擴(kuò)展您的實(shí)現(xiàn)以使其通用。


文檔參考:


自動映射器:http : //docs.automapper.org/en/stable/Getting-started.html

Expressmapper:http ://expressmapper.org/


查看完整回答
反對 回復(fù) 2022-11-13
?
哆啦的時光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個贊

您正在嘗試隱式轉(zhuǎn)換Test為Test2對象。更正代碼的一種簡單方法是構(gòu)造Test2對象:


lstTest2 = lstTest.ConvertAll(x => new Test2 { Name = x.Name, Score = x.Score });

即使底層結(jié)構(gòu)相同,也不能從Testto 轉(zhuǎn)換Test2。如果要顯式轉(zhuǎn)換,則必須定義轉(zhuǎn)換運(yùn)算符:


class Test2 {

    // all code of class Test2


    public static explicit operator Test2(Test v)

    {

        return new Test2 { Name = v.Name, Score = v.Score };

    }

}

然后你可以投ConvertAll:


lstTest2 = lstTest.ConvertAll(x => (Test2)x);


查看完整回答
反對 回復(fù) 2022-11-13
?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個贊

與其擁有兩個名稱不同的完全不同的對象,不如研究如何進(jìn)行對象繼承。


class Program

{

    static void Main(string[] args)

    {

        List<TestBase> lstTest = new List<TestBase>();


        lstTest.Add(new Test { Name = "j", Score = 2 });

        lstTest.Add(new Test2 { Name = "p", Score = 3 });

    }

}


class TestBase

{

    private string name;

    private int score;


    public string Name

    {

        get { return name;  }

        set { this.name = value; }

    }


    public int Score

    {

        get { return score; }

        set { this.score = value; }

    }

}


class Test : TestBase { }


class Test2 : TestBase { }


查看完整回答
反對 回復(fù) 2022-11-13
  • 3 回答
  • 0 關(guān)注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號